- Home »
Пакет Linux comm – Сочетает функциональность diff и cmp: Примеры, Функции, Скрипты – Использование
Пакет Linux comm представляет собой утилиту командной строки, которая сочетает функциональность команд diff и cmp. Она используется для сравнения двух отсортированных файлов по строкам и вывода различий между ними.
Официальная страница пакета comm: https://man7.org/linux/man-pages/man1/comm.1.html
Программа comm написана на языке программирования C.
Установка на поддерживаемые операционные системы
Для установки пакета comm на поддерживаемые операционные системы, выполните следующие шаги:
Ubuntu
sudo apt-get install coreutils
CentOS
sudo yum install coreutils
Arch Linux
sudo pacman -S coreutils
Примеры команд
Вот несколько примеров команд, связанных с пакетом comm:
Пример 1: Сравнение двух файлов и вывод различий
comm file1.txt file2.txt
Эта команда сравнивает два файла (file1.txt и file2.txt) и выводит три столбца: строки, которые присутствуют только в первом файле, строки, которые присутствуют только во втором файле, и строки, которые присутствуют в обоих файлах.
Пример 2: Сравнение двух файлов и вывод только общих строк
comm -12 file1.txt file2.txt
Эта команда сравнивает два файла (file1.txt и file2.txt) и выводит только строки, которые присутствуют и в первом, и во втором файле.
Пример 3: Сравнение двух файлов и вывод только уникальных строк
comm -3 file1.txt file2.txt
Эта команда сравнивает два файла (file1.txt и file2.txt) и выводит только строки, которые присутствуют только в одном из файлов.
Похожие команды и преимущества
Помимо команды comm, существуют и другие утилиты командной строки, которые выполняют сравнение файлов. Некоторые из них:
- diff: сравнивает два файла и выводит различия построчно.
- cmp: сравнивает два файла и выводит первое отличие в виде байтового смещения.
- sdiff: сравнивает два файла и выводит различия в виде параллельных столбцов.
Преимущества команды comm по сравнению с другими утилитами:
- Позволяет сравнивать только отсортированные файлы.
- Выводит различия в удобном формате с тремя столбцами.
- Позволяет легко настраивать вывод с помощью опций команды.
Примеры использования comm в автоматизации
Вот три примера скриптов, которые демонстрируют использование команды comm в автоматизации:
Скрипт 1: Проверка наличия общих строк в двух файлах
#!/bin/bash
file1="file1.txt"
file2="file2.txt"
if comm -12 "$file1" "$file2" >/dev/null; then
echo "Файлы $file1 и $file2 имеют общие строки."
else
echo "Файлы $file1 и $file2 не имеют общих строк."
fi
Этот скрипт проверяет наличие общих строк в двух файлах (file1.txt и file2.txt) с помощью команды comm. Если общие строки есть, выводится сообщение “Файлы file1.txt и file2.txt имеют общие строки”, в противном случае выводится сообщение “Файлы file1.txt и file2.txt не имеют общих строк”.
Скрипт 2: Сравнение содержимого двух директорий
#!/bin/bash
dir1="dir1"
dir2="dir2"
comm -3 <(ls "$dir1") <(ls "$dir2")
Этот скрипт сравнивает содержимое двух директорий (dir1 и dir2) с помощью команды comm. Он выводит только имена файлов, которые присутствуют только в одной из директорий.
Скрипт 3: Поиск отсутствующих строк в файле
#!/bin/bash
file="file.txt"
missing_lines=$(comm -23 <(sort "$file") <(seq 1 $(wc -l < "$file")))
if [[ -n "$missing_lines" ]]; then
echo "Отсутствующие строки в файле $file:"
echo "$missing_lines"
else
echo "Все строки присутствуют в файле $file."
fi
Этот скрипт ищет отсутствующие строки в файле (file.txt) с помощью команды comm. Он сортирует файл и сравнивает его с последовательностью чисел от 1 до количества строк в файле. Если есть отсутствующие строки, они выводятся на экран, в противном случае выводится сообщение “Все строки присутствуют в файле file.txt”.
Таблица функций и констант
Функция/Константа | Описание |
---|---|
comm | Основная команда для сравнения файлов и вывода различий. |
-1 | Выводить только строки, присутствующие только в первом файле. |
-2 | Выводить только строки, присутствующие только во втором файле. |
-3 | Выводить только строки, присутствующие только в одном из файлов. |
-12 | Выводить только строки, присутствующие и в первом, и во втором файле. |
-23 | Выводить только строки, присутствующие только во втором файле. |
-13 | Выводить только строки, присутствующие только в первом файле. |
Кто использует команды comm в своей работе?
Команды comm могут быть полезными для разработчиков программного обеспечения, системных администраторов и аналитиков данных. Они могут использоваться для сравнения версий файлов, поиска различий в конфигурационных файлах, анализа данных и других задач, связанных с сравнением файлов и поиском различий.
В реальном мире команды comm могут помочь в следующих ситуациях:
- Сравнение версий программного кода для поиска изменений и ошибок.
- Сравнение конфигурационных файлов для обнаружения изменений в настройках системы.
- Анализ данных, таких как логи или выходные данные программ, для выявления различий и паттернов.
- Сравнение результатов тестов или экспериментов для проверки корректности и согласованности.
Команды comm могут быть полезными инструментами для автоматизации и оптимизации работы с файлами и данными.
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.