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