vi

时间:2017-03-06 05:51:43

标签: unix vi

我有一个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 /.......

3 个答案:

答案 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的问题。