【问题标题】:sed error "Invalid range end"sed 错误“无效范围结束”
【发布时间】: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


    【解决方案1】:

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

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

    否则,您将需要转义 ()+,例如:

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

    【讨论】:

    • 谢谢!它在命令行上工作。不过,here 是一个后续问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多