grep using output from another command
Solution 1
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.
Solution 2
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.
bruchowski
Updated on July 09, 2022Comments
-
bruchowski almost 2 years
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 fromcommand2
, so that the final output would look like this?2b41f358-ff6d-418c-a0d3-ac7151c03b78 7ac4995c-ff2c-4717-a2ac-e6870a5670f0
-
bruchowski almost 10 yearsPerfect thanks, I was missing the <() part, didn't know you could do that