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