Common – compare two sorted files line by line and write to standard output:
the lines that are common, plus the lines that are unique.
Syntax comm [options]... File1 File2 Options -1 suppress lines unique to file1 -2 suppress lines unique to file2 -3 suppress lines that appear in both files A file name of `-' means standard input.
Before `comm’ can be used, the input files must be sorted using the collating sequence specified by the ‘LC_COLLATE’ locale, with trailing newlines significant. If an input file ends in a non-newline character, a newline is silently appended. The ‘sort’ command with no options always outputs a file that is suitable input to ‘comm’.
With no options, `comm’ produces three column output. Column one contains lines unique to FILE1, column two contains lines unique to FILE2, and column three contains lines common to both files. Columns are separated by a single TAB character.
The options -1, -2, and -3 suppress printing of the corresponding columns.
Unlike some other comparison utilities, `comm’ has an exit status that does not depend on the result of the comparison. Upon normal completion `comm’ produces an exit code of zero. If there is an error it exits with nonzero status.
$ comm -23 <(sort words.txt | uniq) <(sort countries.txt | uniq)
If the file words.txt contains a subset of countries.txt then the above will return nothing.
If the file words.txt contains items that don’t exist in countries.txt then the above will return those unique items.
To return the lines that are in both words.txt and countries.txt use:
$ comm -12 <(sort words.txt | uniq) <(sort countries.txt | uniq)
Related linux commands:
cmp – Compare two files
diff – Display the differences between two files
diff3 – Show differences among three files
sdiff – merge two files interactively
head – Output the first part of file(s)
sort – Sort text files
Equivalent Windows commands: COMP / FC – Compare and display Characters/Lines which do not match.
(also the WINDIFF GUI)