10

我在 Ubuntu 12.04 上运行这个替换命令。

$ sed -e "s/([a-zA-Z0-9.-/\\ :]+)/\1/g"

但是,会引发以下错误。

sed: -e 表达式 #1, char 27: 无效的范围结束

我记得在 MacOSX 上也可以使用相同的表达式。
你能描述一下命令失败的原因吗?

4

1 回答 1

17

您可以通过两种方式解决它。其中之一是使用-rswitch 来避免转义特殊字符并-在范围内移动到第一个或最后一个位置并避免其特殊含义,它就像:

sed -re "s/([a-zA-Z0-9./\\ :-]+)/\1/g"

否则,您将需要逃避(,)+,例如:

sed -e "s/\([a-zA-Z0-9./\\ :-]\+\)/\1/g"
于 2013-05-19T17:31:55.523 回答