sed错误"无效范围结束"

JJD*_*JJD 9 regex ubuntu sed substitution

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

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

但是,会引发以下错误.

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

我记得同样的表达式适用于MacOSX.
你能描述命令失败的原因吗?

Bir*_*rei 14

你可以用两种方式解决它.其中之一是使用-r开关来避免转义特殊字符并-在范围内移动到第一个或最后一个位置并避免其特殊含义,它将是:

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

否则你将需要逃脱(,)并且+,像:

sed -e "s/\([a-zA-Z0-9./\\ :-]\+\)/\1/g"
Run Code Online (Sandbox Code Playgroud)