Those working in Unix environment must be aware of the requirement to find common lines between two Unix files. In this article, I want to introduce you a solution of this problem.
For our example, I have taken two files first and second. The contents of the files are as below:
wiw_labs:$ cat first
wiw_labs:$ cat second
In Unix one command to deal with such issues is the “comm” command. This command finds out what is common between two files, what is unique to first file and what is unique to second file.
Here is the general syntax for this command:
wiw_labs:$ comm first_file second_file
The output is three column output. First column shows the lines unique to the first file only. The second column shows the lines unique to second file only. The third column shows the lines common to both files.
wiw_labs:$ comm first second
Â Â Â Â cable
Â Â Â Â mobile
Â Â Â Â modem
Â Â Â Â phone
Â Â Â Â server
If you have a look on the output, you’ll see:
computer, monitor and switch are only in first file.
cable, mobile and server are only in second file.
modem and phone are in both files.
The first, second and third column are specified by number 1,2 and 3.
Simple formula is, whichever column you don’t want to see, pre-pend it with -.
So, if you want to see only the lines unique to first file, use -23(Means don’t show me lines unique to second file and common lines.).
If you want to see only the lines unique to second file, use -13(Means don’t show me lines unique to first file lines and common lines.).
If you want to see only the lines common to both files, use -12(Means don’t show me first file lines and common lines.).
How To See The Line Only in First File
For watching lines unique to first file only use -23.
wiw_labs:$ comm -23 first second
How To See The Line Only in Second File
For watching lines unique to first file only use -13.
wiw_labs:$ comm -13 first second
How To See The Line Common To Both Files
wiw_labs:$ comm -12 first second