我的程序输出到标准输出。不过,我想按原样显示一些输出,并仅显示其余输出的 md5sum
(测试目的)。我认为这应该比我到目前为止得到的更简单:
program | tee >( grep -P 'pattern' >&2 ) | grep -vP 'pattern' | md5sum
正则表达式模式
很长、乏味并且不断变化,所以我宁愿不必重复它。最好的情况是 grep
(或另一个我不知道或没有想到的命令)有一个将未命中重定向到 stderr 的选项。
最佳答案
您可以使用 perl
来匹配模式并将其写入标准错误流,只需在 STDERR
前面添加 print
program | perl -ne '$fh = (/pattern/ ? STDERR : STDOUT); print $fh $_' | md5sum
也是因为使用了perl
,默认内置了PCRE库,在正则表达式匹配/../
下使用
关于shell - 如何使用 grep 将 stdout 拆分为 stdout 和 stderr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59089213/