2009-06-01 17 views
6

Ben sadece bir günlük dosyasında okumak, arama yapmak ve değiştirmek ve değişiklikleri aynı günlük dosyasına yazmak istiyorum.Perl: Bir dosya ile döngü ve yerine

Perl'de bunu yapmanın en iyi yolu nedir?

perl -i -pe 's/some/thing/' log.file 

Here

cevap

9

Normalde bu için bir astar kadar kod

perl -pi.bak -e "s/find/replace/g" <file> 

Not -i.bak kısmı - Bu, .bak uzantısıyla bir yedekleme dosyası oluşturur. (... Eğer perl sorulduğunda biliyorum)

perl -pi -e "s/find/replace/g" <file> 
+0

Ancak neden geri dönüşleri kullanamıyorum? Gibi perl -pi -e "s/foo (. *) Bar/bar $ 1foo /" tezt2 çalışmıyor .. –

+2

Kabuğunuz muhtemelen dizgiyi bozuyor. "" Lerinizi "* ile değiştirmeyi deneyin, böylece * genişlemez. –

+0

Teşekkürler bu yaptı! –

8

Bu, genellikle, tek bir astar ile yapılır: Bkz

1

veya sed kullanabilirsiniz: Eğer internetsiz oynamak istiyorsanız bir destek olmadan varolan dosyanın üzerine yazmak için bunu yapabilirsiniz

sed -i 's/find/replace/g' <file> 
+0

Sed, normal ifade kurallarını ele alış biçiminde ... Perl'dan daha farklı, en azını söylemek. – GJTorikian

İlgili konular