The comm
command is used to compare two sorted files. This command compares the differences between two sorted files column by column and displays the results. If no parameters are specified, the results are displayed in three columns: the first column shows the lines that only appear in the first file, the second column shows the lines that only appear in the second file, and the third column shows the lines that appear in both the first and second files. If the file names given are "-", the comm
command will read data from the standard input device.
comm [OPTION]... FILE1 FILE2
-1
: Suppress lines unique toFILE1
.-2
: Suppress lines unique toFILE2
.-3
: Suppress 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
: Use stringSTR
as the output delimiter.-z, --zero-terminated
: End lines with aNUL
character instead of a newline.--help
: Display this help message and exit.--version
: Output version information and exit.
Suppose we have two files, recipe.txt
and shopping-list.txt
, which are different but share many lines. Not all recipe ingredients are on the shopping list, and not all items on the shopping list are part of the recipe.
# recipe.txt
All-Purpose Flour
Baking Soda
Bread
Brown Sugar
Chocolate Chips
Eggs
Milk
Salt
Vanilla Extract
White Sugar
# shopping-list.txt
All-Purpose Flour
Bread
Brown Sugar
Chicken Salad
Chocolate Chips
Eggs
Milk
Onions
Pickles
Potato Chips
Soda Pop
Tomatoes
White Sugar
By using the comm
command, it will read these two files and provide us with three columns of output. In this case, each line of the output will start with 0, 1, or 2 tabs, resulting in three columns:
- The first column with zero tabs represents the lines that only appear in the first file.
- The second column with one tab represents the lines that only appear in the second file.
- The third column with two tabs represents the lines that appear in both files.
comm recipe.txt shopping-list.txt
# All-Purpose Flour
#Baking Soda
# Bread
# Brown Sugar
# Chicken Salad
# Chocolate Chips
# Eggs
# Milk
# Onions
# Pickles
# Potato Chips
#Salt
# Soda Pop
# Tomatoes
#Vanilla Extract
# White Sugar
Compare recipe.txt
and shopping-list.txt
, while suppressing the output of the first and second columns.
comm -12 recipe.txt shopping-list.txt
# All-Purpose Flour
# Bread
# Brown Sugar
# Chocolate Chips
# Eggs
# Milk
# White Sugar
https://github.com/WindrunnerMax/EveryDay
https://www.computerhope.com/unix/ucomm.htm
https://www.runoob.com/linux/linux-comm-comm.html
https://www.geeksforgeeks.org/comm-command-in-linux-with-examples/