【发布时间】:2013-05-14 07:08:31
【问题描述】:
我在 Ubuntu 12.04 上运行这个替换命令。
$ sed -e "s/([a-zA-Z0-9.-/\\ :]+)/\1/g"
但是,会引发以下错误。
sed: -e 表达式 #1, char 27: 无效范围结束
我记得在 MacOSX 上也可以使用相同的表达式。
你能描述一下命令失败的原因吗?
【问题讨论】:
标签: regex ubuntu sed substitution
我在 Ubuntu 12.04 上运行这个替换命令。
$ sed -e "s/([a-zA-Z0-9.-/\\ :]+)/\1/g"
但是,会引发以下错误。
sed: -e 表达式 #1, char 27: 无效范围结束
我记得在 MacOSX 上也可以使用相同的表达式。
你能描述一下命令失败的原因吗?
【问题讨论】:
标签: regex ubuntu sed substitution
您可以通过两种方式解决它。其中之一是使用-r 开关来避免转义特殊字符,并将- 范围内的移动到第一个或最后一个位置并避免其特殊含义,就像:
sed -re "s/([a-zA-Z0-9./\\ :-]+)/\1/g"
否则,您将需要转义 (、) 和 +,例如:
sed -e "s/\([a-zA-Z0-9./\\ :-]\+\)/\1/g"
【讨论】: