2009-08-05 21 views

cevap

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

Not. Bu GNU aroması için yazılmıştır.

+0

vay .. neredeyse beni öğrenmek istiyor. Çok teşekkürler! – Learning

1

bu oldukça sed daha bir AWK kullanımı

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

Oy vermek için * asla * tavsiye etmiyoruz; yedekleme yapmadan perl -i': 'perl -i.bak'. Kolaydır ve düzenlemelerinizi yanlış yapmadığınızdan emin olduktan sonra yedeklemeleri kolayca kaldırabilirsiniz. – Telemachus

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

close(ARGV) her dosyanın başında hat sayacını $. yeniden gereklidir; varsayılan olarak, dosyalar arasında çizgiler sayar.

+1

Sizi bir sürü veriyi silmeden bir yazımdan korumak için -i.bak' yapmaya değmez mi? (Sadece forgetp olduğunu unutun. -p'.) – Telemachus

+0

@Telemachus: Bütün bir dizin yaparken, öncelikle tüm dizini kopyalamayı tercih ederim (örneğin, cp -a dir {,. Save}); sonra gerekirse geri alabilirim. – ysth

İlgili konular