Ser*_* Vu 3 grep scripting zsh
我想内联以下 2 个命令:
big_query_that_returns_text > in.txt
$ printf '%s\n' "foo" "bar" | grep -f /dev/stdin in.txt
Run Code Online (Sandbox Code Playgroud)
通过查找foo
和bar
输入来工作in.txt
但是当我尝试
printf '%s\n' "foo" "bar" | grep -f /dev/stdin big_query_that_returns_text
Run Code Online (Sandbox Code Playgroud)
我收到
zsh: argument list too long: grep
Run Code Online (Sandbox Code Playgroud)
我也试过
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"
Run Code Online (Sandbox Code Playgroud)
但我收到同样的错误。
这是一个进程替换的地方:它是一个代码块,就像一个文件
将大查询结果通过管道传送到 grep 的标准输入
big_query_that_returns_text | grep -f <(printf '%s\n' "foo" "bar")
Run Code Online (Sandbox Code Playgroud)
如果生成“foo”和“bar”的命令更复杂,您可以在进程替换中使用任意换行符来提高可读性:
big_query_that_returns_text \
| grep -f <(
printf '%s\n' "foo" "bar"
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
569 次 |
最近记录: |