说我有command1
输出:
b05808aa-c6ad-4d30-a334-198ff5726f7c
59996d37-9008-4b3b-ab22-340955cb6019
2b41f358-ff6d-418c-a0d3-ac7151c03b78
7ac4995c-ff2c-4717-a2ac-e6870a5670f0
我还有command2
输出:
b05808aa-c6ad-4d30-a334-198ff5726f7c
59996d37-9008-4b3b-ab22-340955cb6019
有没有办法从command1
grep输出到不包含command2
匹配的任何行,以便最终输出看起来像这样?
2b41f358-ff6d-418c-a0d3-ac7151c03b78
7ac4995c-ff2c-4717-a2ac-e6870a5670f0
答案 0 :(得分:17)
发出这个grep
command1 | grep -vF -f <(command2)
下面,
-F
表示固定字符串匹配*
-v
表示反转匹配
-f
表示带有模式的文件
<(command)
实际上使用该命令创建FIFO并在重定向时使用它。
答案 1 :(得分:6)
要获取command1
输出中未显示在command2
输出中的所有行:
grep -vFf <(command2) <(command1)
-f
告诉grep
使用来自文件的模式。在这种情况下,该文件是command2
的输出。 -F
告诉grep
这些模式将被视为固定字符串,而不是正则表达式。 -v
告诉grep
反转其正常行为,只显示不匹配的行。