Описание
# comm [options] file1 file2
Аргументы
Аргументы file1 и file2 являются именами файлов файлов, которые сравниваются.
Использование дефиса (-) вместо file1 или file2 заставляет comm читать стандартный ввод вместо этого файла.
Опции
Вы можете комбинировать параметры. Без параметров comm производит вывод из трех столбцов.
параметры / функции
- -1 Не отображает столбец 1 (не отображает строки, найденные только в file1).
- -2 Не отображает столбец 2 (не отображает строки, найденные только в file2).
- -3 Не отображает столбец 3 (не отображает строки, найденные в обоих файлах).
- -i Нечувствительное к регистру сравнение строк.
- – -check-order Проверьте порядок ввода, даже если все входные строки являются парой
- – -nocheck-order Игнорировать порядок ввода
- – -output-delimiter = STR делит столбцы с делителем “STR”
- – -help Отображает меню справки
- – -version Отображение информации о версии команд
Примечание. Если файлы не были отсортированы, comm будет работать неправильно. Строкам во втором столбце предшествует один TAB, а в третьем столбце – два TAB. Статус вывода указывает, нормально ли выполнена команда (0) или аномально (не 0).
Примеры использования команды «comm» в Linux
Пример 1: Основное использование
Давайте рассмотрим базовый пример команды «comm» для сравнения 2 отсортированных файлов. Файлы выглядят так:
# cat file1 aa bb cc dd
# cat file2 cc xx yy zz
Команда comm сравнивает файлы по строкам и выводит любые одинаковые строки. Например:
# comm file1 file2 aa bb cc dd xx yy zz
Этот вывод команды отображается в трех столбцах: столбец 1 показывает строки только в file1 (aa, bb, dd), column2 показывает каждую строку только в file2 (xx, yy, zz), а в столбце 3 показана каждая строка обоих файлов (xx, yy, zz).
Это гораздо более подробное сравнение, чем с diff, и вывод может быть подавляющим, когда все, что вам нужно, – это найти или проверить одно или два простых изменения. Тем не менее, это может быть невероятно полезно, когда вы не очень хорошо знакомы с любым файлом и хотите посмотреть, как они сравниваются.
Пример 2: Подавление столбцов
comm поддерживает опции в форме -n, где n равно либо 1, 2, либо 3.
При использовании эти параметры определяют, какие столбцы (столбцы) подавляются.
Например, если мы хотим выводить только строки, разделяемые обоими файлами, мы будем подавлять вывод столбцов 1 и 2:
# comm -12 file1 file2 cc
Точно так же вы можете отображать только строки, которые присутствуют только в file1 и file2, используя команды ниже.
# comm -23 file1 file2 aa bb dd
# comm -13 file1 file2 xx yy zz
Пример 3: Проверка сортировки на входе
команда comm предоставляет 2 опции для проверки отсортированных входов:
1. –check-order
2. –nocheck-order
Опция -check-order проверяет правильность сортировки ввода перед сравнением.
Если вход не отсортирован, вы получите ошибку, как показано ниже:
# comm --check-order file1 file2 aa bb cc dd xx comm: file 2 is not in sorted order
В то время как опция -nocheck-order позволяет сравнивать файлы, даже если вход не находится в отсортированном формате. Например:
# cat file1 aa bb cc dd
# cat file2 xx cc yy zz
# comm --nocheck-order file1 file2 aa bb cc dd xx yy zz
Пример 4: разделительный вывод
comm также предоставляет возможность удаления вывода с использованием предоставленного пользователем разделителя
. Например, вместо вывода с разделителями по умолчанию «tab» мы можем использовать разделитель, такой как «|» (pipe), как показано в примере ниже:
# comm --output-delimiter="|" file1 file2 aa bb ||cc dd |xx |yy |zz
comm V/s diff
comm аналогичен diff, поскольку обе команды сравнивают два файла.
Но comm также может использоваться как uniq; comm выбирает повторяющиеся или уникальные строки между двумя отсортированными файлами, тогда как uniq выбирает повторяющиеся или уникальные строки в том же отсортированном файле.