web-dev-qa-db-ja.com

シェルスクリプトでの括弧の削除

括弧、または括弧とその間のテキストを削除するメカニズムを作成したいと思います。例えば:

前:

text0 text1 text2 (text3 text4)

後:

text0 text1 text2 text3 text4

または:

text0 text1 text2

オプションと他の種類のブラケットの両方をテストしたいのですが、AwkやSedなど、どのツールを使用すればよいかわかりません。私はどんなアドバイスにも感謝します。

4
SeSa

質問の残り半分、括弧のみを削除します(ただしnot間のテキスト):

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

出力:

text0 text1 text2 text3 text4

テキストを保持するには、これで十分です:

tr -d '()'

テキストと括弧を削除するには:

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

テキストに次のようなネストされた括弧が含まれている場合:

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