coreutils: Set operations
8.3.6 Union, Intersection and Difference of files
-------------------------------------------------
Combine ‘sort’, ‘uniq’ and ‘join’ to perform the equivalent of set
operations on files:
Command outcome
--------------------------------------------------------------------------
‘sort -u file1 file2’ Union of unsorted files
‘sort file1 file2 | uniq -d’ Intersection of unsorted files
‘sort file1 file1 file2 | uniq -u’ Difference of unsorted files
‘sort file1 file2 | uniq -u’ Symmetric Difference of unsorted
files
‘join -t '' -a1 -a2 file1 file2’ Union of sorted files
‘join -t '' file1 file2’ Intersection of sorted files
‘join -t '' -v2 file1 file2’ Difference of sorted files
‘join -t '' -v1 -v2 file1 file2’ Symmetric Difference of sorted
files
All examples above operate on entire lines and not on specific
fields: ‘sort’ without ‘-k’ and ‘join -t ''’ both consider entire lines
as the key.