如何使用grep将stdout分为stdout和stderr?

时间:2019-11-28 12:44:17

标签: shell grep

我的程序输出到stdout。但是,我想按原样显示一些输出,并仅显示其余的md5sum(测试目的)。我认为这应该比我到目前为止得到的更简单:

program | tee >( grep -P 'pattern' >&2 ) | grep -vP 'pattern' | md5sum

正则表达式pattern冗长,乏味且不断变化,因此,我宁愿不必重复它。最好的情况是,如果grep(或我不知道或想到的另一个命令)具有将未命中重定向到stderr的选项。

1 个答案:

答案 0 :(得分:2)

只需在perl前面加上STDERR,就可以使用print匹配模式并将其写入标准错误流

program | perl -ne '$fh = (/pattern/ ? STDERR : STDOUT); print $fh $_' | md5sum

由于使用了perl,PCRE库默认是内置的,可以在正则表达式匹配/../下使用

相关问题