Command-Line

如何grep另一個命令的結果(複數)

  • April 28, 2022

我有一個命令,我希望通過另一個命令的結果(複數;多行)過濾其輸出。到目前為止,我一直將第一個命令的結果發送到文件並使用以下命令過濾第二個命令grep -f

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

我想把它放在一個命令中,不需要臨時文件。

如果您的 shell 提供“程序替換”,請嘗試

command2 | grep -f <(command1)

如果沒有,您還可以使用命令替換在命令行上傳遞正則表達式列表:

command2 | grep -e "$(command1)"

這將對該正則表達式列表的最大大小有一個下限,並且也意味著如果command1’ 的輸出包含 NUL 字元(無論如何,許多實現grep也會扼殺牠們-f),它將不起作用。

引用自:https://unix.stackexchange.com/questions/700725