我有一个看起来像这样的文件:
120E+00 360E+01 258E-09-784E+02
-847E+00-360E+01 242E-08 420E+05
14E+00 360E+01 254E+00 78E+02
-120E+00-254E-01-223E-09-786E-02
E+00,E+01,E-01 等采用科学计数法表示 ^0,^1,^-1 等。
我想获取以下格式的文件:
120E+00 360E+01 258E-09 -784E+02
-847E+00 -360E+01 242E-08 420E+05
14E+00 360E+01 254E+00 78E+02
-120E+00 -254E-01 -223E-09 -786E-02
我想在负数之前添加一个空格,而不修改科学计数法或负数本身。
如果负数是行中的第一个(第一列),我也不想添加空格,只是从第 2 列到行尾。
我也想用awk。
我希望我的解释清楚。
谢谢!
-
因此,本质上,如果紧接在 the 之前的字符是数字,则您希望在 every 之前添加一个空格-
。你可以这样做,awk
但这里确实不是一个好的选择。这样做要简单得多sed
:或 Perl:
对于上述两种情况,
-i
如果要修改原始文件而不是打印出来,请添加:这是在 GNU 中执行此操作的
awk
任何现代版本mawk
和任何其他awk
支持的方法gensub
,由Ed Morton提供,他在现已删除的评论中提供了这一点:使用 GNU
awk
(gawk
),您可以-i inplace
用来编辑原始文件:输出
您绝对不需要 awk 的所谓“现代”变体来完成它:
确认可以在 gawk、mawk-1、mawk-2 和 nawk 上工作。
对于更简单的变体,它也修复了尾随空格/制表符,以及考虑科学记数法的变化: