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
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)
Assuming you want to retain only the lines unique to file 2 you can do:
comm -13 file1 file2 Note that the comm command expects the two files to be in sorted order.
Here's a simple solution that I think is better than diff:
sort file1 file2 | uniq -u
sort file1 file2 concatenates the two files and sorts ituniq -u prints the unique lines (that do not repeat). It requires the input to be pre-sorted.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With