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.