删除shell脚本中的括号

删除shell脚本中的括号

我想创建删除括号或括号及其之间的文本的机制。例如:

前:

text0 text1 text2 (text3 text4)

后:

text0 text1 text2 text3 text4

或者:

text0 text1 text2

我想测试这两个选项和其他类型的括号,但我不确定应该使用什么工具,Awk 或 Sed 还是其他工具?如果有任何建议,我将不胜感激。

答案1

要保留文本,这就足够了:

tr -d '()'

要删除文本和括号:

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

如果文本包含嵌套括号,例如:

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

答案2

你问题的另一半,只删除括号(但是不是它们之间的文本):

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

输出:

text0 text1 text2 text3 text4

相关内容