Команды Linux · 2 min read · Sep 16, 2025

Учебник по команде comm в Linux для начинающих (5 примеров)

Команда comm в Linux позволяет пользователям сравнивать два отсортированных файла построчно. В этом учебнике мы обсудим этот инструмент командной строки, используя простые для понимания примеры. Но прежде чем мы это сделаем, обратите внимание, что все примеры, упомянутые в этом учебнике, были протестированы на Ubuntu 16.04LTS.

Команда comm в Linux

Следующие примеры должны дать вам хорошее представление о том, как работает инструмент ‘comm’.

1. Как сравнить два отсортированных файла с помощью comm

Чтобы сравнить два отсортированных файла с помощью ‘comm’, вам нужно просто передать их имена в качестве аргументов инструменту командной строки. Вот общая синтаксис:

comm [name-of-first-file] [name-of-second-file]

Например, предположим, что ‘file1’ и ‘file2’ - это два файла в нашем случае. Первый содержит следующие строки:

001  
056  
127  
258

в то время как второй содержит следующие строки:

002  
056  
167  
369

Теперь вот вывод команды ‘comm’ в этом случае:

comm file1 file2

Итак, вы можете видеть, что вывод состоит из трех столбцов. Первый содержит строки, уникальные для ‘file1’, второй содержит строки, уникальные для ‘file2’, а третий столбец содержит строки, общие для обоих файлов.

2. Как подавить отдельные столбцы в выводе команды comm

Если вы хотите, вы можете подавить отдельные столбцы в выводе команды comm. Для этого у вас есть три параметра командной строки: -1, -2 и -3. Как вы могли догадаться, эти числа представляют столбцы, которые вы хотите подавить.

Например, вот команда для подавления третьего столбца в нашем случае:

comm -3 file1 file2

Итак, вы можете видеть, что третий столбец был подавлен.

Обратите внимание, что вы можете подавить несколько столбцов с помощью одной команды. Например:

comm -12 file1 file2

подавит как первый, так и второй столбцы.

3. Как заставить comm сравнивать файлы, которые не отсортированы

Как мы знаем, команда comm работает только с отсортированными файлами. Если она обнаружит, что файл не отсортирован, в выводе появляется сообщение, которое сообщает пользователю об этом. Например, мы поменяли местами первую и вторую строки в ‘file1’ и затем сравнили его с ‘file2’. Вот какой был вывод:

Итак, вы можете видеть, что команда выдала сообщение о том, что ‘file1’ не отсортирован. Теперь, если вы не хотите, чтобы инструмент проверял, отсортирован ли ввод, вы можете использовать параметр –nocheck-order.

comm --nocheck-order file1 file2

Итак, вы можете видеть, что сообщение, которое ранее отображалось, было подавлено.

Обратите внимание, что в случае, если вы хотите явно сказать команде comm выполнить проверку сортировки на входных файлах, вы можете использовать параметр –check-order.

4. Как разделить столбцы вывода comm с помощью пользовательской строки

По умолчанию столбцы в выводе команды comm разделены пробелами. Однако, если вы хотите, вы можете изменить это и использовать строку по вашему выбору в качестве разделителя. Это можно сделать с помощью параметра –output-delimiter. Этот параметр требует от вас указать строку, которую вы хотите использовать в качестве разделителя.

comm --output-delimiter=STR file1 file2

Например, мы использовали символ плюс (+) в качестве разделителя.

5. Как сделать так, чтобы строки вывода comm заканчивались на NUL

Строки вывода команды comm по умолчанию заканчиваются на новую строку. Однако, если вы хотите, вы можете сделать так, чтобы они заканчивались на NUL. Это можно сделать с помощью параметра командной строки -z.

comm -z file1 file2

Заключение

Команда comm не предлагает много функций - мы охватили почти все ее параметры командной строки здесь. Так что просто поймите и практикуйте все, что мы обсудили в этом учебнике, и вы будете готовы использовать инструмент в своих повседневных задачах. В случае любых сомнений или вопросов, обратитесь к странице man команды или оставьте комментарий ниже.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.