2009-08-05 47 views

回答

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

注意sed -i語義由Unix版本有所不同,所以請檢查您的man sed。這是爲GNU風格寫的。

+0

哇......差點讓我想學習sed。謝謝一堆! – Learning 2009-08-05 12:54:36

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 
0
ls | xargs --replace=foo perl -i -ne 'print; print "second line text\n" unless $x++;' foo 
+0

我投票*永遠不會推薦沒有備份的`perl -i`:`perl -i.bak`。這很簡單,一旦你確定你沒有修改錯誤,你可以輕鬆地刪除備份。 – Telemachus 2009-08-05 22:51:56

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

close(ARGV)是必要在每個文件的開頭重新啓動行計數器$.;默認情況下,它會跨文件計算行數。

+1

難道你不覺得值得使用`-i.bak`來保護你免受錯誤消除大量數據嗎? (想象一下,你忘了`-p`。) – Telemachus 2009-08-05 22:50:52

相關問題