有没有办法让echo
管道末尾的 简单地附加到当前输出而不是全部删除?例如,如何保留cat
and的输出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"