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