如何 grep 另一个命令的结果(复数)

如何 grep 另一个命令的结果(复数)

我有一个命令,我想通过另一个命令的结果(复数;多行)过滤其输出。到目前为止,我已经将第一个命令的结果发送到文件并使用以下命令过滤第二个命令grep -f

command1 > /tmp/output
command2 | grep -f /tmp/output
rm /tmp/output

我想将其放入单个命令中,而不需要临时文件。

答案1

如果您的 shell 提供“进程替换”,请尝试

command2 | grep -f <(command1)

如果没有,您还可以使用命令替换在命令行上传递正则表达式列表:

command2 | grep -e "$(command1)"

command1这将对正则表达式列表的最大大小有一个较低的限制,并且还意味着如果的输出包含 NUL 字符,它将无法工作(无论如何,许多实现grep也会对它们造成阻塞)。-f

相关内容