Include header in the 'grep' resultのように、grep
の出力のヘッダを保持することに興味がありました。コマンドグループへのパイプは、一部のコマンドでのみ機能するのはなぜですか?
問題解決の解決策(sed
を使用)が質問に表示されますが、answer with most upvotesが私の注目を集めました。たとえば、grep --color
を利用できます。これは、例えば、コマンドhead
とgrep
でcommand groupへの入力をパイプ示唆:
ps -ef | { head -1; grep python; }
ただし、リンクされた答えとコメントに書かれたように、これはパイプの左側にあるすべてのコマンドでは動作しません。 。 ps
またはlsof
でうまく動作しますが、df
、ls
などでは機能しません。それらを使用する場合は、グループ内の最初のコマンドの出力のみが印刷されます。コマンド・グループへの配管が唯一のいくつかのコマンドのために働く理由
$ df | { head -1; grep '/'; }
Filesystem 1K-blocks Used Available Use% Mounted on
$
は誰が説明してもらえますか?それを普遍的に働かせる方法はありますか?
一般的には、入力を受け取る2番目のコマンドに頼るべきではないと思います。 –
'awk'を使って、最初の行またはマッチした行を表示することができます...' ps -ef | awk 'NR == 1 ||/python/'' –