【发布时间】: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 中运行该命令时,出现以下错误。
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 的分隔符更改为# 或/ 以外的其他字符,这样您就不必转义每个/
sed -n '\#^\[2015/01/01 03:46#,\#^\[2015/01/01 03:47#p'
注意:我转义了每个模式前面的第一个 octothorpe,以便 sed 可以将其解释为分隔符。
【讨论】:
"[" 是正则表达式中的特殊字符。您需要转义它并像这样使用它:
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 ....
【讨论】: