2013-04-06 25 views
75

ben bash Bu kodu çalıştırırsanız:Sed, neden tüm oluşumları değiştirmez?

echo dog dog dos | sed -r 's:dog:log:' 

o verir çıkışı:

log dog dos 

Nasıl bu köpek tüm tekrarlarını değiştirmek yapabilir? Sen sonunda g koymak zorunda

+2

mevcuttur, ya burada' -r' seçeneği gerekmez . –

cevap

18

, bu "küresel" anlamına gelir: sed örüntü tamponun içindekiler küresel değiştirme gerçekleştirir böylece

echo dog dog dos | sed -r 's:dog:log:g' 
            ^
+1

sed -e yerine, sed -r yerine kullanılmalıdır. –

+0

@DylanDaniels Ubuntu'daki "adam sedye" ye göre, "-r" seçeneği "uzatılmış düzenli ifadeler kullan" anlamına gelir. Yani verilen komut iyi çalışır, ancak uzun süreli normal ifadelerin özelliklerine ihtiyaç duymaz. –