Linux 使用sed时未终止的地址正则表达式
我正在使用下面的命令,但在linux中运行该命令时,出现以下错误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'
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'