Sometimes during administration work with real system you can have a simple task: get list of strings and find subset of this list missing in other list. Seems to be trivial but if you have thousands of values, then it’s time to use some automated solution.
Fortunately you don’t need to write own program because comm
utility
can do our task perfectly. It analyses 2 files (file1 and file2) as sets of strings and
allows to get:
- lines only in file1;
- lines only in file2;
- and lines in both files.
Let us see how it works on a very simple example: file1 - list of
files archieved yesterday, file2 - list of current files. In order to
be correctly processed these files must be sorted, it’s simple - run
$ sort file1 > file1_s
and $ sort file2 > file2_s
.
Now use comm
to get following useful information:
-
list of files deleted today (lines only in file1):
$ comm -23 file1_s file2_s
-
list of files added today (lines only in file2):
$ comm -13 file1_s file2_s
-
list of files present yesterday and today (lines in file1 and file2):
$ comm -12 file1_s file2_s
Hope it’ll be useful in some situations. For more details see man
comm
.