如何阻止“grep”截断管道输出

如何阻止“grep”截断管道输出

有没有办法让echo管道末尾的 简单地附加到当前输出而不是全部删除?例如,如何保留catand的输出grep并将“END OF OUTPUT”添加到同一管道的输出末尾:

$ cat file.txt | grep 'foo' | echo "END OF OUTPUT"
something foo 
foo
foo something
END OF OUTPUT

类似于cat -工作原理:

echo "START OF OUTPUT" | cat - file.txt

答案1

像这样:

{ grep foo file.txt; echo END OF OUTPUT; } > output.txt

无需启动子 shell 即可对命令进行分组(Bourne shell 除外)。

你可以这样做:

grep foo file.txt | cat - <(echo END OF OUTPUT) > output.txt

(使用 ksh、bash 或 zsh),但这会创建更多额外的进程和管道,但没有额外的好处。

答案2

使用子 shell 将输出分组,如下所示:

(grep foo file.txt; echo "END OF OUTPUT") > output.txt

答案3

这将实现你想要的

$ cat file.txt | grep 'foo' ; echo "END OF OUTPUT"

相关内容