我正在使用Mac。
我正在尝试使用sed从字符串中删除所有括号(和)。
输入:this string contains (parentheses)
所需的输出:this string contains parentheses
我尝试过:
sed -E 's/[\)\(]//g'
但是无论我是否逃脱了括号,我仍然只与第一个匹配(因此删除了)。
编辑:问题出在输入字符串上:
一个紧密的括号是ASCII 41,而我的输入是ASCII 239,它解释了失败的原因。更令人困惑的是,这等同于尖锐的口音。仔细检查表明,如果没有以下“空格”,则无法选择。
答案 0 :(得分:1)
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