For people who like to make things

Let’s say you have two text files, FileA and FileB.  You want a file that has all the lines of FileA that are_ not_ in FileB.  How do you do that?

The simple answer is grep. The -v option inverts the search, and only prints lines that do not match.  The -f option is used to specify a file that contains a list of all the patterns for which to look - one pattern per line.

Let’s say FileA looks like this:

1 Alice 10
2 Bob   15
3 Alice 16
4 Carl  10
5 Dave  20

and FileB looks like this:

2 Bob   15
4 Carl  10

Then, you can use the following command to print out all lines from FileA that are not in FileB:

$ grep -vf FileB FileA
1 Alice 10
3 Alice 16
5 Dave  20
$

You could, alternatively, have gotten the same results if FileB looked like this:

.*Bob.*
.*Carl.*

© 2019 Aijaz Ansari
The Joy of Hack by Aijaz Ansari is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
Powered by Pelican