frops frops - 4 months ago 8
Linux Question

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

Answer

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)

Comments