Bu kodu bash'da çalıştırırsam:
echo dog dog dos | sed -r 's:dog:log:'
çıktı verir:
log dog dos
Tüm köpek oluşumlarının yerini almasını nasıl sağlayabilirim?
Bu kodu bash'da çalıştırırsam:
echo dog dog dos | sed -r 's:dog:log:'
çıktı verir:
log dog dos
Tüm köpek oluşumlarının yerini almasını nasıl sağlayabilirim?
Yanıtlar:
g
Sed , şablon tamponunun içeriğinin genel bir ikamesini gerçekleştirecek şekilde değiştiriciyi eklemelisiniz :
echo dog dog dos | sed -e 's:dog:log:g'
Sed ile ilgili harika dokümantasyon için http://www.grymoire.com/Unix/Sed.html adresini kontrol edin . Bu küresel bayrak burada açıklanmıştır: http://www.grymoire.com/Unix/Sed.html#uh-6
İçin resmi belgeler http://www.gnu.org/software/sed/manual/ adresindeGNU sed
mevcuttur.
sed -E 's,foo,bar,g'
küresel bir şey yapmaz. Eğer değiştirirsen sed -E -e 's,foo,bar,g'
işe yarıyor.
g
Sonuna bir koymalısınız , "global" anlamına gelir:
echo dog dog dos | sed -r 's:dog:log:g'
^
man sed
, -r
seçenek "genişletilmiş normal ifadeler kullan" anlamına gelir. Bu nedenle verilen komut, çalışması için genişletilmiş normal ifadelerin özelliklerine ihtiyaç duymasa da iyi çalışıyor.
g
Küresel ikame için bayrağa ihtiyacınız var, buradaki-r
seçeneğe de ihtiyacınız yok.