Como substituir um parêntese esquerdo por sed?

24

Eu tenho que substituir ( por algum caractere no meu arquivo, e não consigo fazer isso. \( é usado para agrupamento em sed e quando usei \( com sed, ele o tratou como \( e não como apenas ( . Parece um caso complicado para mim.

    
por dwwdw 08.02.2013 / 19:16

1 resposta

39

Se você usar sed sem -r (expressões regulares estendidas), funcionará como ele usa \(\) em vez de () para agrupamento:

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

Por exemplo

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

Se você quiser usar -r , poderá colocar ( dentro de [] , por exemplo

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

Como Lekensteyn observa usando tr pode ser mais apropriado, já que você está apenas substituindo e não precisa do poder total das expressões regulares.

    
por 08.02.2013 / 19:26

Tags