请查看以下命令:
===> echo "hi" | tee >(sed -e 's/hi/wow/') | tail | perl -pe 's/hi/janet/;print "holy\n"'
holy
janet
holy
wow
为什么holy
会在这里打印两次?
我期待结果是
holy
janet
wow
答案 0 :(得分:1)
我们可以将您的代码提炼为更简单的形式:
(echo hi; echo wow) | perl -pe 'print "holy\n"'
现在,这会将两行提供给perl
,其-p
选项的意思是“Read lines from stdin and print them also”。我们也告诉Perl打印“神圣”。因此,对于每个输入行,我们打印“神圣”然后输入行,因此两行变为四行并不奇怪。可能你的惊喜源于没有意识到-p
的机制 - 它表现得好像你的整个脚本被放在所有输入行的循环中。