【问题标题】:unterminated address regex while using sed使用 sed 时未终止的地址正则表达式
【发布时间】:2015-01-01 09:57:11
【问题描述】:

我正在使用以下命令,但是在 linux 中运行该命令时,出现以下错误。

sed -n '/^[2015/01/01 03:46/,/^[2015/01/01 03:47/p' < Input.txt
sed: -e expression #1, char 42: unterminated address regex

请帮我解决这个问题。

【问题讨论】:

    标签: linux unix sed


    【解决方案1】:

    您需要转义[,否则它认为它是一个组的开始,并转义到您的数据中的/

    sed -n '/^\[2015\/01\/01 03:46/,/^\[2015\/01\/01 03:47/p' Input.txt
    

    或(感谢 nu11p01n73R)

    sed -n '\|^\[2015/01/01 03:46|,\|^\[2015/01/01 03:47|p' Input.txt
    

    【讨论】:

    • [ 开始一个字符类,而不是一个组。
    【解决方案2】:

    转义[\[ 并将sed 的分隔符更改为#/ 以外的其他字符,这样您就不必转义每个/

    sed -n '\#^\[2015/01/01 03:46#,\#^\[2015/01/01 03:47#p'
    

    注意:我转义了每个模式前面的第一个 octothorpe,以便 sed 可以将其解释为分隔符。

    【讨论】:

      【解决方案3】:

      "[" 是正则表达式中的特殊字符。您需要转义它并像这样使用它:

      sed -n '/^\[2015\/01\/01 03:46/,/^\[2015\/01\/01 03:47/p' Input.txt
      Output:
      [2015/01/01 03:46] INFO ....
      [2015/01/01 03:46] ERROR ....
      [2015/01/01 03:47] INFO ....
      

      【讨论】:

      • 这现在看起来像我的解决方案:)
      • 是的,通过转义斜杠进行了测试,并且在没有转义斜杠的情况下进入!
      猜你喜欢
      • 2021-04-22
      • 1970-01-01
      • 2012-07-20
      • 1970-01-01
      • 1970-01-01
      • 2011-11-26
      • 1970-01-01
      • 1970-01-01
      • 2015-03-27
      相关资源
      最近更新 更多