Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I want to diff two files and ignore lines that are present in one file but missing in the other.

For example





I'm currently running the following diff command

diff File1 File2 --changed-group-format='%>' --unchanged-group-format=''

Which in this case would produce


as the output, i.e. only missing or conflicting lines. I would like to only print conflicting lines, i.e. ignore cases where one line is missing from File2 and is present in File1 (not the other way around). Is there any way to do something like this using diff or do I have to resort to other tools? If so, what would you recommend?

share|improve this question
If your input files could be sorted, the comm command might do what you want (assuming it is available under cygwin) – Brian Swift Apr 6 '12 at 23:17
up vote 2 down vote accepted

You might also take a look at comm, if you have it available:

comm [-1] [-2] [-3 ] file1 file2
-1 Suppress the output column of lines unique to file1.
-2 Suppress the output column of lines unique to file2.
-3 Suppress the output column of lines duplicated in file1 and file2.

The input files should be sorted. However, you can modify the default behavior with --nocheck-order option, if available.

In your case you would want comm --nocheck-order -23 file filter_file

share|improve this answer

When you say conflicting, do you mean entries that appear in both File1 and FIle2?

If so, use the following -

Create a shell script called and put the below into it.

File1Contents=$(cat File1)

for i in $File1Contents; do
   grep $i File2

Run from the directory where File1 and File2 are stored.


share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .