我有一个ascii文件,我需要在vi编辑器中使用这样的数字进行编辑(空格分隔):
2.340 2.310 2.440 3.220 5.650 1.212
2.310 2.350 2.640 3.420 2.651 8.232
2.350 2.320 2.430 3.460 7.642 0.222
............
............
............
等
我需要为上面的每个数字添加一个常量值0.13,以得到以下结果
2.470 2.440 2.570 3.350 5.780 1.342
2.440 2.480 2.770 3.550 2.781 8.362
2.480 2.450 2.560 3.590 7.772 0.352
............
............
............
等
问题: 有谁知道如何在vi编辑器中进行此替换? :%S /.......
答案 0 :(得分:0)
vi
不适合您的要求。请改用awk
:
awk '{for(i=1; i<=NF; i++){$i+=0.13}}i' file > file.modified
产生以下结果:
2.47 2.44 2.57 3.35 5.78 1.342 2.44 2.48 2.77 3.55 2.781 8.362 2.48 2.45 2.56 3.59 7.772 0.352
答案 1 :(得分:0)
@Olarge:试试:
awk '{print $0+.13}' RS=" " ORS=" " Input_file
如果您不担心Input_file的最后一行中的空格,那么上面可能是您的快速解决方案。
答案 2 :(得分:0)
您可以非常轻松地使用vim,如下所示:
:1,$ s/\(\d*\.\d*\)/\=str2float(submatch(1))+0.13/g
直接回答了OP的问题。