Comm - Comm
Эта статья включает в себя список общих Рекомендации, но он остается в основном непроверенным, потому что ему не хватает соответствующих встроенные цитаты.Январь 2013) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Оригинальный автор (ы) | Ли Э. МакМахон |
---|---|
Разработчики) | AT&T Bell Laboratories, Ричард Столмен, Дэвид Маккензи |
изначальный выпуск | Ноябрь 1973 г. |
Операционная система | Unix, Unix-подобный, План 9, Inferno |
Тип | Команда |
Лицензия | coreutils: GPLv3 + |
В комм команда в Unix семейство компьютеров операционные системы это утилита, которая используется для сравнения двух файлы для общих и отличных линий. комм указано в POSIX стандарт. Он был широко доступен на Unix-подобный операционные системы с середины до конца 1980-х годов.
История
Написано Ли Э. МакМахон, комм впервые появился в Версия 4 Unix.[1]
Версия комм в комплекте GNU coreutils был написан Ричард Столмен и Дэвид Маккензи.[2]
использование
комм читает два файла как входные, рассматриваемые как строки текста. комм выводит один файл, содержащий три столбца. Первые два столбца содержат строки, уникальные для первого и второго файла соответственно. Последний столбец содержит общие для обоих строк. Функционально это похоже на разница.
Столбцы обычно выделяются <tab> персонаж. Если входные файлы содержат строки, начинающиеся с символа разделителя, выходные столбцы могут стать неоднозначными.
Для повышения эффективности стандартные реализации комм ожидайте, что оба входных файла будут расположены в одной строке сопоставление порядок, отсортированный лексически. В сортировка (Unix) Для этого можно использовать команду.
В комм алгоритм использует последовательность сортировки текущего регион. Если обе строки в файлах не сопоставлены в соответствии с текущим языковым стандартом, результат не определен.
Код возврата
В отличие от разница, код возврата из комм не имеет логического значения в отношении отношения двух файлов. Код возврата 0 указывает на успех, код возврата> 0 указывает на ошибку, возникшую во время обработки.
Пример
$ кошка фуяблокобананбаклажан$ кошка баряблокобананбананцуккини$ comm foo bar яблоко банан бананбаклажан цуккини
Это показывает, что в обоих файлах есть один банан, но только бар есть второй банан.
Более подробно, выходной файл имеет следующий вид. Обратите внимание, что столбец интерпретируется по количеству ведущих символов табуляции. t представляет символ табуляции, а n представляет новую строку (Escape-символ # Программирование и форматы данных ).
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
---|---|---|---|---|---|---|---|---|---|---|
0 | т | т | а | п | п | л | е | п | ||
1 | т | т | б | а | п | а | п | а | п | |
2 | т | б | а | п | а | п | а | п | ||
3 | е | грамм | грамм | п | л | а | п | т | п | |
4 | т | z | ты | c | c | час | я | п | я | п |
Сравнение с diff
В общем, разница это более мощная утилита, чем комм. Проще комм лучше всего подходит для использования в скриптах.
Основное различие между комм и разница в том, что комм отбрасывает информацию о порядке строк до сортировки.
Незначительная разница между комм и разница в том, что комм не будет пытаться указать, что строка между двумя файлами «изменилась»; строки отображаются в столбцах «из файла №1», «из файла №2» или «в обоих столбцах». Это может быть полезно, если нужно, чтобы две линии считались разными, даже если они имеют лишь незначительные различия.
Другие варианты
комм имеет параметры командной строки для подавления любого из трех столбцов. Это полезно для написания сценариев.
Также есть возможность читать один файл (но не оба) со стандартного ввода.
Пределы
Перед записью следующей выходной строки из каждого входного файла во время сравнения строк должна буферизоваться до полной строки.
Некоторые реализации читают строки с функцией readlinebuffer () который не накладывает никаких ограничений на длину строки, если системной памяти достаточно.
Другие реализации читают строки с функцией fgets (). Эта функция требует фиксированного буфера. Для этих реализаций размер буфера часто зависит от POSIX макрос LINE_MAX.
Смотрите также
- Сравнение инструментов сравнения файлов
- Список команд Unix
- cmp (Unix) - символьное сравнение файлов
- вырезать (Unix) - разделение файлов по столбцам
Рекомендации
- ^ Макилрой, М.Д. (1987). Читатель Research Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (Технический отчет). CSTR. Bell Labs. 139.
- ^ https://linux.die.net/man/1/comm
внешняя ссылка
- Единая спецификация UNIX, Выпуск 7 из Открытая группа : выбрать или отклонить строки, общие для двух файлов - Справочник по командам и утилитам,
- План 9 Руководство программиста, том 1 –
- Inferno Общие команды Руководство –