更改多个文件中的一行

时间:2017-09-12 11:44:33

标签: linux bash sed

我有很多文件,从file0file3100。我想在每个文件中为一行添加###

该行

Generated by trjconv : PTEG1 t= 8100.00000

应该是

###Generated by trjconv : PTEG1 t= 8100.00000

每个文件中的时间(t)不同。如何在每个文件中添加###一次,并且每个文件中的时间(t)仍然与添加前相同?

以下是我的尝试:

#!/bin/bash

# loop all inp files in the current dir
for frameFile in frame*.inp; do
    sed -i -r -e 's/Generated by trjconv : pteg-1 t=.+/###Generated by trjconv : pteg-1 t=.+/g' ${frameFile}
fi
done

1 个答案:

答案 0 :(得分:0)

一个简单的perl one liner完成这项工作:

perl -pi -e 's/Generated by trjconv : PTEG1 t=/###$&/' file*

这将在名称以Generated by trjconv : PTEG1 t=开头的所有文件中将###Generated by trjconv : PTEG1 t=替换为file