如何在Unix上的多个文件中的特定行插入一行?

时间:2009-08-05 12:22:52

标签: perl unix sed

我需要在目录中的数百个文件的第二行(因此在文件中向下移动其他行)中插入带有特定文本的行。关于如何做到的任何快速的Unix提示?

4 个答案:

答案 0 :(得分:13)

sed -i -e '2iYour line here' /dir/*

请注意,sed -i语义因Unix风格而异,因此请检查man sed。这是为GNU风格编写的。

答案 1 :(得分:2)

perl -pi -we'print "extra line\n" if $. == 3; close ARGV if eof' files

在每个文件的开头重新启动行计数器close(ARGV)需要$.;默认情况下,它会对文件中的行进行计数。

答案 2 :(得分:1)

这是AWK使用而不是sed

for i in $(<list_of_files)
do
     awk '{if (FNR!=2) print $0; 
           else { print "new line"; print $0}}' $i > ${i}.tmp;
     mv ${i}.tmp $i;
done

答案 3 :(得分:0)

ls | xargs --replace=foo perl -i -ne 'print; print "second line text\n" unless $x++;' foo