如何使用sed在正则表达式中转义负号?

如何使用sed在正则表达式中转义负号?,sed,filter,expression,Sed,Filter,Expression,我需要从不需要的字符中释放字符串。在本例中,我想从b中筛选所有+和所有-,并将结果写入c。因此,如果b是+fdd-dfdf++,c应该是+-++ read b c=$(echo $b | sed 's/[^(\+|\-)]//g') 但当我运行脚本时,控制台会说: sed:-e表达式#1,字符15:无效范围结束 原因是正则表达式中的\-。我如何解决这个问题并说我想过滤所有的-?你在找这个吗 kent$ echo 'a + b + c - d - e'|sed 's/[^-+]//g' ++--

我需要从不需要的字符中释放字符串。在本例中,我想从b中筛选所有
+
和所有
-
,并将结果写入c。因此,如果b
+fdd-dfdf++
c应该是
+-++

read b
c=$(echo $b | sed 's/[^(\+|\-)]//g')
但当我运行脚本时,控制台会说:

sed:-e表达式#1,字符15:无效范围结束


原因是正则表达式中的
\-
。我如何解决这个问题并说我想过滤所有的
-

你在找这个吗

kent$ echo 'a + b + c - d - e'|sed 's/[^-+]//g'
++--

如果使用bash,可能是'sed's/[^-+]//g'