Search code examples
linuxbashunixdiff

How to display only different rows using diff (bash)


How can I display only different rows using diff in a separate file?

For example, the file number 1 contains the line:

1;john;125;3
1;tom;56;2
2;jack;10;5

A file number 2 contains the following lines:

1;john;125;3
1;tom;58;2
2;jack;10;5

How to make in the following happen?

1;tom;58;2

Solution

  • a.txt:

    1;john;125;3
    1;tom;56;2
    2;jack;10;5
    

    b.txt:

    1;john;125;3
    1;tom;58;2
    2;jack;10;5
    

    Use comm:

    comm -13 a.txt b.txt 
    1;tom;58;2
    

    The command line options to comm are pretty straight-forward:

    -1 suppress column 1 (lines unique to FILE1)

    -2 suppress column 2 (lines unique to FILE2)

    -3 suppress column 3 (lines that appear in both files)