Sol parantez sed ile nasıl değiştirilir?


27

Dosyamda (bazı karakterlerle değiştirmem gerekiyor ve yapamıyorum. \(sed'de gruplama için kullanılır \\(ve sed ile kullandığımda , \(karakterin sadece karakter olarak görülmediği görülmüştür (. Bana zor bir durum gibi geldi.


7
Öneri: Sadece bir karakterin yerine başka bir karakter koymak istiyorsanız, kullanın tr(anslate) echo 'Hello (world)' | tr '()' '[]':; çıktılar Hello [world].
Lekensteyn

Yanıtlar:


45

Eğer sed özelliğini kullanıyorsanız olmadan -r (genişletilmiş düzenli ifadeler) kullandığı gibi çalışacak \(\)yerine ()gruplandırmak için:

sed -e 's/(/X/g'

Örneğin

$ echo "foo (bar) (baz)" | sed -e 's/(/X/g'
foo Xbar) Xbaz)

Kullanmak istiyorsanız içine -rkoyabilirsiniz , örneğin([]

sed -re 's/[(]/X/g'

As Lekensteyn Uyarılar kullanarak trsen sadece değiştiriyorsanız olarak daha uygun olabilir ve düzenli ifadeler gücüyle gerekmez.


TL; DR: Kaçma.
qwertzguy

Bunu, php'nin kullanımdan kaldırdığı "split" i "explode" işleviyle değiştirmek için kullandım, "split" in bir boşluk grep -lRZ " split(" . | xargs -0 sed -i -e 's/ split(/ explode(/g'
bıraktığından
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.