他のコマンドの結果(複数形)をgrepする方法

他のコマンドの結果(複数形)をgrepする方法

コマンドがありますが、他のコマンドの結果(複数形、複数行)に基づいてその出力をフィルタリングしたいと思います。これまで、最初のコマンドの結果をファイルに送信し、次のコマンドを使用して2番目のコマンドをフィルタリングしましたgrep -f

command1 > /tmp/output
command2 | grep -f /tmp/output
rm /tmp/output

一時ファイルなしでこれを単一のコマンドに入れたいです。

ベストアンサー1

シェルが「プロセス置換」を提供している場合は、次のことを試してください。

command2 | grep -f <(command1)

そうでない場合は、コマンド置換を使用してコマンドラインに正規表現リストを渡すこともできます。

command2 | grep -e "$(command1)"

command1これは、正規表現リストの最大サイズの下限を設定し、出力にNUL文字が含まれていると機能しないことを意味します(grepとにかく多くの実装ではこれをブロックします)。-f

おすすめ記事