我想创建删除括号或括号及其之间的文本的机制。例如:
前:
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