"foo", "bar"
入力パイプラインがCSV形式の単語リストであると想像してください。
"foo"
次に、このファイルのようなものがあり、ここに(1)または"bar"
(2)が含まれているかどうかをテストしたいと思います。たとえば、次のようになります。
echo "foo\nbar" | grep input.txt $0
出力から次の2つのgrep操作の組み合わせ結果を取得したいと思います。
grep "foo" input.txt
grep "bar" input.txt
例:
input.txt = "foo1\nfoo2n\bar\n123"
output = "foo1\nfoo2n\bar\n"
すべてのパラメータを検索する場合、何回実行されるかは問題ありません。
答え1
-f
ファイルから読み取られたフラグをファイル名として使用できます。/dev/stdin
これは標準入力を指します。
printf '%s\n' "foo" "bar" | grep -f /dev/stdin input.txt
Grepの一部の実装では、ハイフンを使用して-
標準入力を表すこともできます。
私はEchoよりも移植性が良いので、Printf(「foo」と「bar」を改行で区切って印刷しました)を使用しました。 Bash Echoは-e
このフラグを\n
改行文字として解釈する必要があります。