我有一个带有两列的文本文件,其数字如下:
0.00000000E+00 0.66244638E+00
0.10000000E+01 0.66630906E+00
0.20000000E+01 0.66920608E+00
0.30000000E+01 0.67210299E+00
...
0.59600000E+03 0.66341203E+02
0.59700000E+03 0.66824037E+02
0.59800000E+03 0.67403436E+02
0.59900000E+03 0.67886269E+02
0.60000000E+03 0.68369102E+02
如何使用 vim ?
将值转换为小数值结果:
0.0 0.66244638
1.0 0.66630906
...
599.0 67.886269
600.0 68.369102
谢谢
答案 0 :(得分:2)
一种方法,来自Vim:
:%s/\v(\d+\.\d+E[+-]\d+)\s+(\d+\.\d+E[+-]\d+)/\=printf("%.1f\t%.8f", str2float(submatch(1)), str2float(submatch(2)))/
这需要使用+float
编译的Vim版本。
在Vim之外的理智/聪明/简单/快捷的方式:
awk '{ printf("%.1f\t%.8f\n", $1, $2) }' file.txt