Comm - Compare sorted files FILE1 and FILE2 line by line


comm [OPTION]... FILE1 FILE2


When FILE1 or FILE2 (not both) is -, read standard input.

With no options, produce 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.

  -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)

  --check-order     check that the input is correctly sorted, even
                      if all input lines are pairable
  --nocheck-order   do not check that the input is correctly sorted
  --output-delimiter=STR  separate columns with STR
  --total           output a summary
  -z, --zero-terminated    line delimiter is NUL, not newline
      --help     display this help and exit
      --version  output version information and exit

Note, comparisons honor the rules specified by 'LC_COLLATE'.

  comm -12 file1 file2  Print only lines present in both file1 and file2.
  comm -3 file1 file2  Print lines in file1 not in file2, and vice versa.

GNU coreutils online help: <>
Full documentation at: <>
or available locally via: info '(coreutils) comm invocation'


It outputs three space-offset columns:

  • The first contains lines that are unique to the first file or argument
  • The second contains lines that are unique to the second file or argument
  • The third column contains lines that are shared by both files

Compare normally

Content file 1 and 2

$ cat file1

$ cat file2
$ comm file1 file2                

When only the matching lines are at interest, use the -n switch, where n is the field number(s).

$ comm -12 file1 file2

Compare where content of lines do not directly match but are matched at other lines in file

$ cat file1      

$ cat file2
$ comm file1 file2

URL List