Использование программы:
comm [option] file1 file2
предполагается, что оба вводных файла file1 и file2 уже
являются отсортированными файлами. Без параметров option программа
comm производит вывод в три колонки. Самая левая колонка состоит
из строк, которые содержатся только в файле с именем file1. Колонка 2
(средняя) состоит из строк, которые содержатся только в файле с именем file2. Третья колонка состоит из строк, которые являются общими для файлов
с именами file1 и file2.
Колонки разделены знаками <TAB>.
Могут использоваться следующие значения параметров: -1, -2, -3, которые означают запрет печати соответствующей колонки (нумерация колонок - слева направо).
Один из примеров использования состоит в сравнении содержимого каталога или
библиотеки. Например, вы хотите сравнить два похожих на первый
взгляд каталога: /lib и /usr/lib
ls -1 /lib > /tmp/L_lib
ls -1 /usr/lib > /tmp/l_usr_lib
comm /tmp/L_lib /tmp/l_usr_lib | less
\end
У меня получился выводной файл размером 335 строк и я обнаружил только один
файл, который находился в обоих каталогах. Фрагмент вывода показан ниже \\
\begin{verbatim}
...
libc.a
libc.so
libc.so.5
libc.so.5.4.38
libc.so.6
libc5-compat
libc_nonshared.a
libcom_err.so.2
libcom_err.so.2.0
...
\end{verbatom}
В третьей колонке оказался единственный файл с именем {\tt libc5-compat}.
Естественно, что это ничего не говорит о содержании файла с данным именем в
разных каталогах.
Аналогичным образом можно сравнивать содержимое двух библиотек
\begin{verbatim}
ar -t /usr/lib/libc.a | sort > Dc
ar -t /usr/lib/libm.a | sort > Dm
comm Dc Dm
Показываем лишь фрагмент вывода
s_ceill.o
s_chown.o
s_copysign.o
s_copysignf.o
s_copysignl.o
s_cos.o
s_cosf.o
s_cosl.o
Как видно имеются часть программ с именами, которые встречаются в обеих
библиотеках. Как и в предыдущем примере,
мы ничего не можем сказать о самих программах.