次の2つのコマンドをインラインにしたいと思います。
big_query_that_returns_text > in.txt
$ printf '%s\n' "foo" "bar" | grep -f /dev/stdin in.txt
foo
検索してbar
動作します。in.txt
しかし、私が試したとき
printf '%s\n' "foo" "bar" | grep -f /dev/stdin big_query_that_returns_text
私は受け取った
zsh: argument list too long: grep
私も試しました
var=`big_query_that_returns_text`
printf '%s\n' "foo" "bar" | grep -f /dev/stdin $var
printf '%s\n' "foo" "bar" | grep -f /dev/stdin "$var"
しかし、同じエラーが発生します。
ベストアンサー1
これは場所ですプロセスの交換:ファイルと同じコードブロックです。
大規模なクエリ結果をgrepのstdinにパイプ
big_query_that_returns_text | grep -f <(printf '%s\n' "foo" "bar")
「foo」と「bar」を生成するコマンドがより複雑な場合は、プロセス置換で任意の改行を使用して読みやすくすることができます。
big_query_that_returns_text \
| grep -f <(
printf '%s\n' "foo" "bar"
)