使用 sed 时未终止的地址正则表达式

unterminated address regex while using sed

我正在使用以下命令,但在 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

请在这方面帮助我。

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

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

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

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 ....

escape [\[ 并将 sed 的定界符更改为 #/ 以外的某些字符,这样就可以避免每次 / ]

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

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