sed或正则表达式如何删除圆括号之间的所有内容

时间:2013-03-26 14:04:51

标签: regex sed


就像我需要的主题一样,我需要用星形*替换圆括号中的所有内容。 。
我已经阅读了很多关于正则表达式的内容,但在这种情况下,圆形支架是特殊的 我生气了。
我有一个像这样的文本

550 OU-001 (BAY0-MC2-F14) Unfortunately messages from xxx.xxx.xxx.xx 

所以应该是

550 OU-001 (*) Unfortunately messages from xxx.xxx.xxx.xx 

我试过这个

sed -e 's/\(([)]*\)/*/' file

但只能以这种方式替换开括号。

550 OU-001 *BAY0-MC2-F14) Unfortunately messages from xxx.xxx.xxx.x

有人可以帮我解释一下解决方案吗?

干杯

4 个答案:

答案 0 :(得分:2)

这个sed应该有效:

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

答案 1 :(得分:2)

这有帮助吗?

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

带您的输入

kent$  echo "550 OU-001 (BAY0-MC2-F14) Unfortunately messages from xxx.xxx.xxx.xx"|sed  's/([^)]*/(*/g'
550 OU-001 (*) Unfortunately messages from xxx.xxx.xxx.xx

答案 2 :(得分:1)

试试这个sed命令 - :

 sed 's/(.*)/(\*)/' file

答案 3 :(得分:0)

这个sed有效:

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

它转换

foo (bar) baz (foobar) end

foo (*) baz (*) end