如何将 stderr 和 stdout 的一部分重定向到 /dev/null

如何将 stderr 和 stdout 的一部分重定向到 /dev/null

我的程序输出到stderrstdout。我想在stderr和中 grep “pattern” stdout。我希望将其余部分发送到/dev/null

如果我在重定向之后进行管道传输stderr./prog 2>/dev/null | grep "pattern" 我得不到stderr包含“模式”的行。

如果我在重定向之前进行管道传输stderr./prog | grep "pattern" 2>/dev/null 没有一个stderr被重定向到/dev/null

感谢您的帮助。

答案1

如果您不关心字符串匹配是源自 stdout 还是 stderr,那么只需通过将 stderr 重定向到 stdout 来合并两个流,然后执行 grep:

$ your_program 2>&1 | grep "pattern"

该示例在 sh、bash、ksh、zsh 中有效。csh 应该是:

$ your_program |& grep "pattern"

答案2

./prog 2>&1 | grep pattern

您必须只看到包含“pattern”的行

相关内容