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

Linux 使用sed时未终止的地址正则表达式,linux,unix,sed,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 sed-n'/^[2015/01/01 03:46/,/^[2015/01/01 03:47/p'

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

请在这方面帮助我。

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

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
Output:
[2015/01/01 03:46] INFO ....
[2015/01/01 03:46] ERROR ....
[2015/01/01 03:47] INFO ....

转义
[
,即
\[
并将sed的分隔符更改为
\
/
以外的字符,这样可以避免您必须转义每个
/

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

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

这现在看起来像我的解决方案:)是的,通过转义斜杠进行测试,输入时不转义斜杠!
[
启动字符类,而不是组。
sed -n '\#^\[2015/01/01 03:46#,\#^\[2015/01/01 03:47#p'