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

时间:2015-01-01 09:57:11

标签: linux unix 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

KIndly帮助我。

3 个答案:

答案 0 :(得分:6)

您需要转义[,否则它会认为它是组的开头,然后转到数据中的/

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

答案 1 :(得分:1)

“[”是正则表达式中的特殊字符。您需要将其转义并使用它:

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

答案 2 :(得分:0)

转义[\[并将sed的分隔符更改为#/以外的某个字符,这样就可以避免每次/ < / p>

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

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