我有一个我正在使用的命令行程序,它记录到控制台。但是,对于一些错误的固件,它每1秒打印一次特定的错误。使用grep过滤命令输出
我该如何使用grep
来过滤输出,以避免这一特定的错误行被记录到控制台?
确切的错误我想摆脱的是:
[1] [NTC] [NET] netcam_read_html_jpeg: Potential split boundary - 1447 chars flushed, 1 re-positioned
如果我在它创建一个sh
脚本出错的行,像这样:
#!/bin/sh
echo "[1] [NTC] [NET] netcam_read_html_jpeg: Potential split boundary - 1447 chars flushed, 1 re-positioned"
echo "testing"
,然后运行它,如预期,输出是
[1] [NTC] [NET] netcam_read_html_jpeg: Potential split boundary - 1447 chars flushed, 1 re-positioned
testing
现在,如果我运行它使用grep -v
到t RY省略这一行,像这样:
./script.sh | grep -v "[1] [NTC] [NET] netcam_read_html_jpeg: Potential split boundary - 1447 chars flushed, 1 re-positioned"
输出仍然是:
[1] [NTC] [NET] netcam_read_html_jpeg: Potential split boundary - 1447 chars flushed, 1 re-positioned
testing
然而,如果我运行相同的脚本,这一次试图摆脱含testing
行,像这样:
./script.sh | grep -v "testing"
然后是,如所预期的输出:
[1] [NTC] [NET] netcam_read_html_jpeg: Potential split boundary - 1447 chars flushed, 1 re-positioned
现在有什么错在这里?显然,我正在使用正确的命令,因为它在第二个示例中起作用。它只是不工作,省略我想要的实际行!
我错过了什么?
请阅读https://stackoverflow.com/help/how-to-ask。还请显示您自己做出的任何尝试。在询问之前,您预计会做出一些尝试。 –
@EtanReisner - 已更新的问题 –
方括号是正则表达式元字符。他们的意思是一个人物类。它们与正常字符不匹配。你需要将它们转义(用'\\')或告诉grep使用固定模式(使用'fgrep'或'-F'标志到'grep')。 –