我的程序输出到stdout。但是,我想按原样显示一些输出,并仅显示其余的md5sum
(测试目的)。我认为这应该比我到目前为止得到的更简单:
program | tee >( grep -P 'pattern' >&2 ) | grep -vP 'pattern' | md5sum
正则表达式pattern
冗长,乏味且不断变化,因此,我宁愿不必重复它。最好的情况是,如果grep
(或我不知道或想到的另一个命令)具有将未命中重定向到stderr的选项。
答案 0 :(得分:2)
只需在perl
前面加上STDERR
,就可以使用print
匹配模式并将其写入标准错误流
program | perl -ne '$fh = (/pattern/ ? STDERR : STDOUT); print $fh $_' | md5sum
由于使用了perl
,PCRE库默认是内置的,可以在正则表达式匹配/../
下使用