"grep"がパイプ出力を切断するのをやめる方法

"grep"がパイプ出力を切断するのをやめる方法

echoパイプの端を完全に取り除くのではなく、現在の出力に追加する方法はありますか?たとえば、catの出力を維持し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

サブシェルを起動せずにコマンドをグループ化できます(Bourneシェルを除く)。

次のことができます。

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

(ksh、bash、またはzshを使用)しかし、これは追加の利点なしでより多くの追加のプロセスとパイプを生成します。

答え2

サブシェルを使用して、次のように出力をグループ化します。

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

答え3

これはあなたが望むものを得るでしょう

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

関連情報