sed:从字符串中删除括号

时间:2019-07-24 13:02:43

标签: bash sed

我正在使用Mac。

我正在尝试使用sed从字符串中删除所有括号(和)。

输入:this string contains (parentheses)

所需的输出:this string contains parentheses

我尝试过:

sed -E 's/[\)\(]//g'

但是无论我是否逃脱了括号,我仍然只与第一个匹配(因此删除了)。

编辑:问题出在输入字符串上:

一个紧密的括号是ASCII 41,而我的输入是ASCII 239,它解释了失败的原因。更令人困惑的是,这等同于尖锐的口音。仔细检查表明,如果没有以下“空格”,则无法选择。

2 个答案:

答案 0 :(得分:1)

带有-d(删除)标志的

tr是删除一个或多个字符的首选。在手册页中:

  

tr实用程序通过替换或删除所选字符将标准输入复制到标准输出。

echo -n 'this string contains (parentheses)' | tr -d '()'
# this string contains parentheses

答案 1 :(得分:1)

请不要使用反斜杠(将\(放在元括号中)或将-E扩展模式匹配(然后将反斜杠用于UN-meta-fy)。

$: echo "this string contains (parentheses)" | sed 's/[)(]//g'
this string contains parentheses