Say I have command1
which outputs this:
b05808aa-c6ad-4d30-a334-198ff5726f7c
59996d37-9008-4b3b-ab22-340955cb6019
2b41f358-ff6d-418c-a0d3-ac7151c03b78
7ac4995c-ff2c-4717-a2ac-e6870a5670f0
I also have command2
which outputs this:
b05808aa-c6ad-4d30-a334-198ff5726f7c
59996d37-9008-4b3b-ab22-340955cb6019
Is there a way to grep the output from command1
to not include any lines matched from command2
, so that the final output would look like this?
2b41f358-ff6d-418c-a0d3-ac7151c03b78
7ac4995c-ff2c-4717-a2ac-e6870a5670f0
Issue this grep
command1 | grep -vF -f <(command2)
Here,
-F
means Fixed string match*
-v
means invert match
-f
means the file with patterns
<(command)
actually creates a FIFO with that command and use it on redirection.
To get all the lines from the output of command1
that do not appear in the output of command2
:
grep -vFf <(command2) <(command1)
-f
tells grep
to use patterns that come from a file. In this case, that file is the output of command2
. -F
tells grep
that those patterns are to be treated as fixed strings, not regex. -v
tells grep
to invert its normal behavior and just show lines the lines that do not match.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With