Excluindo parênteses no shell script

4

Eu gostaria de criar um mecanismo para excluir parênteses ou parênteses e o texto entre eles. Por exemplo:

antes:

text0 text1 text2 (text3 text4)

depois:

text0 text1 text2 text3 text4

ou:

text0 text1 text2

Gostaria de testar as duas opções e outros tipos de colchetes, mas não tenho certeza de qual ferramenta devo usar, Awk ou Sed ou talvez outra coisa? Eu ficaria grato por qualquer conselho.

    
por SeSa 30.01.2018 / 20:53

2 respostas

4

A outra metade da sua pergunta excluindo apenas os parênteses (mas não o texto entre eles):

echo 'text0 text1 text2 (text3 text4)' |
   sed 's/[()]//g'

Saída:

text0 text1 text2 text3 text4
    
por 31.01.2018 / 02:23
5

Para manter o texto, isso é suficiente:

tr -d '()'

Para excluir o texto e parênteses:

sed 's/([^)]*)//g;s/  / /g'

Se o texto contiver parênteses aninhados, como:

echo 'text0 (text1 (textA )) text2 (text3 text4) test5' |
  sed -e :A -e 's/([^()]*)//;tA' -e 's/  / /g'
    
por 31.01.2018 / 21:59