将Python脚本的输出重定向到grep

5

有一个Python脚本可以构建。当运行它时,它会打印出所有警告和错误信息。但是我只想获取包含“error”的行。因此,我执行以下操作:

python ./build_native.py | grep "error"

但它仍然打印所有内容,而不仅仅是“error”行。
编辑:
如果您需要脚本文件的内容,可以在此处查看:这里

1
以上代码对我刚写的一个脚本完美地运行了,该脚本交替打印“hello”和“error”20次。能否给我们提供一下build_native.py的输出样例? - huu
请看我的编辑。实际上,这不是脚本的直接输出,而是脚本调用的编译器的输出。这会改变管道的工作方式吗? - Narek
2个回答

11
您需要将stderr重定向到stdout。只有这样,grep才能过滤掉不包含“error”的所有行。
python ./build_native.py 2>&1 | grep "error" 

谢谢!我怎么会忘记呢?在 Windows 上编程是如此糟糕。 :( - Narek

0

如果你只想将错误信息导入管道,可以试试这个:

python ./build_native.py 2>&1 >/dev/null | grep "error" 

这将隐藏stdout消息。 - huu
你不想要这个吗?我的假设是 OP 不想在 stdout 中包含错误,只想要 traceback 中的错误。 - Oleksiy
我不敢妄自揣测原帖作者的意图。 - huu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接