zsh変数でgrepを実行する方法は?

zsh変数でgrepを実行する方法は?

次の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"
  )

おすすめ記事