<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://aidalinux.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=Comm</id>
	<title>Comm - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://aidalinux.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=Comm"/>
	<link rel="alternate" type="text/html" href="https://aidalinux.ru/wiki/index.php?title=Comm&amp;action=history"/>
	<updated>2026-04-23T23:41:07Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://aidalinux.ru/wiki/index.php?title=Comm&amp;diff=74&amp;oldid=prev</id>
		<title>Langator: Новая страница: «== Описание ==  comm — утилита unix, читает файл1 и файл2, которые должны быть предварительно лекс...»</title>
		<link rel="alternate" type="text/html" href="https://aidalinux.ru/wiki/index.php?title=Comm&amp;diff=74&amp;oldid=prev"/>
		<updated>2011-03-23T15:25:48Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «== Описание ==  comm — утилита unix, читает файл1 и файл2, которые должны быть предварительно лекс...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Описание ==&lt;br /&gt;
&lt;br /&gt;
comm — утилита unix, читает файл1 и файл2, которые должны быть предварительно лексически отсортированы, и генерирует вывод, состоящий из трёх колонок текста: строки, найденные только в файле файл1; строки, найденные только в файле файл2; и строки, общие для обоих файлов. Имя файла «-» означает стандартный ввод. Перед каждой колонкой будет напечатано столько символов табуляции, сколько печатается колонок с меньшими номерами. Например, если вывод второй колонки подавляется, то перед строками, печатаемыми в первой колонке, символов табуляции не будет совсем, а перед строками в третьей колонке будет напечатан один символ табуляции.&lt;br /&gt;
&lt;br /&gt;
Утилита comm предполагает, что файлы были предварительно лексически отсортированы; все символы участвуют в сравнении строк.&lt;br /&gt;
&lt;br /&gt;
Составим два файла: aguty.txt и zay.txt:&lt;br /&gt;
&lt;br /&gt;
  cat aguty.txt&lt;br /&gt;
  &lt;br /&gt;
  агути&lt;br /&gt;
  заяц&lt;br /&gt;
  кошка&lt;br /&gt;
  собака&lt;br /&gt;
  ящерица&lt;br /&gt;
&lt;br /&gt;
  cat zay.txt&lt;br /&gt;
  &lt;br /&gt;
  заяц&lt;br /&gt;
  кошка&lt;br /&gt;
  мышь&lt;br /&gt;
  собака&lt;br /&gt;
  ящерица&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что слова в обоих файлах рассортированы в алфавитном порядке.&lt;br /&gt;
&lt;br /&gt;
Теперь сравним их при помощи команды comm:&lt;br /&gt;
&lt;br /&gt;
  comm aguty.txt zay.txt&lt;br /&gt;
  &lt;br /&gt;
       агути&lt;br /&gt;
  &lt;br /&gt;
                заяц&lt;br /&gt;
  &lt;br /&gt;
                кошка&lt;br /&gt;
  &lt;br /&gt;
        мышь&lt;br /&gt;
  &lt;br /&gt;
                собака&lt;br /&gt;
  &lt;br /&gt;
                ящерица&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Мы увидим три колонки, разделенные табуляцией. В первой колонке собраны слова, уникальные для первого файла; во второй колонке - уникальные для второго файла; в третьей колонке собраны слова общие для двух файлов.&lt;br /&gt;
&lt;br /&gt;
Однако стоит нам изменить порядок слов в одном из файлов, хотя бы заменив его на обратный алфавитному при помощи команды sort:&lt;br /&gt;
&lt;br /&gt;
  sort -r zay.txt&lt;br /&gt;
  &lt;br /&gt;
  ящерица&lt;br /&gt;
  собака&lt;br /&gt;
  мышь&lt;br /&gt;
  кошка&lt;br /&gt;
  заяц&lt;br /&gt;
&lt;br /&gt;
Как команда comm уже не справляется со своей задачей:&lt;br /&gt;
&lt;br /&gt;
  sort -r zay.txt | comm - aguty.txt&lt;br /&gt;
  &lt;br /&gt;
        агути&lt;br /&gt;
        заяц&lt;br /&gt;
        кошка&lt;br /&gt;
        собака&lt;br /&gt;
                ящерица&lt;br /&gt;
  &lt;br /&gt;
  собака&lt;br /&gt;
  мышь&lt;br /&gt;
  кошка&lt;br /&gt;
  заяц&lt;br /&gt;
&lt;br /&gt;
Результат, как видите, совершенно нелеп и непредсказуем. В самом деле, в первой колонке уникальными для первого файла признаны все слова, кроме, почему-то, ящерицы. Во второй то же самое. А та же ящерица признана единственным общим словом для двух файлов (третья колонка). И дело тут не в том, что я пользовался русскими словами, с английскими было бы то же самое. Вывод: лучше не пытаться применять команду comm к не сортированным файлам.&lt;br /&gt;
&lt;br /&gt;
Поясню конструкцию в командной строке последнего примера. Я применил программный канал из двух команд. Оператором программного канала служит вертикальная черта (|). Стандартный вывод команды sort -r zay.txt направляется на стандартный ввод команде comm. В аргументе команды comm, вместо первого файла прочерк, что заставляет ее принять стандартный ввод вместо файла.&lt;br /&gt;
&lt;br /&gt;
== Опции команды comm ==&lt;br /&gt;
&lt;br /&gt;
Кроме общеизвестных --help и --version, команда имеет всего три опции и они представлены не буквами, как обычно, а цифрами:&lt;br /&gt;
&lt;br /&gt;
*Опция -1 Подавляет вывод первой колонки (строк, уникальных для первого файла)&lt;br /&gt;
*Опция -2 Подавляет вывод второй колонки (строк, уникальных для второго файла)&lt;br /&gt;
*Опция -3 Подавляет вывод третьей колонки (строк, общих для двух файлов)&lt;br /&gt;
&lt;br /&gt;
== Резюме команды comm ==&lt;br /&gt;
&lt;br /&gt;
Трудно представить себе, чтобы этой командой можно было пользоваться для реального сравнения двух файлов. Ведь файлы придется сначала сортировать при помощи команды sort, а потом разбираться в трех колонках вывода, что вовсе не просто, если в строке содержится хотя бы несколько слов. Можно применять ее в каких-либо скриптах, либо для сравнения проверяемого файла с эталонным, отключая те или иные колонки вывода при помощи опций. Например, если у вас есть файл file-dict.txt со всеми словами английского языка (из какого-либо словаря), то вы можете сравнить написание сомнительного слова с этим файлом, отключив колонки 2 и 3 при помощи соответствующих опций:&lt;br /&gt;
&lt;br /&gt;
  echo WORD | comm -23 - file-dict.txt&lt;br /&gt;
&lt;br /&gt;
Если в выводе ничего нет, то слово WORD написано правильно, а если есть само слово WORD, значит оно написано неверно (либо его нет в эталонном файле file-dict.txt).&lt;br /&gt;
&lt;br /&gt;
Подозреваю, что данная команда была написана товарищами Столлменом и Маккензи именно для этих функций своего Emacs'а.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Информация взята с [http://open-club.ru/main/reading/HuMan_comm open-club.ru]&lt;/div&gt;</summary>
		<author><name>Langator</name></author>
	</entry>
</feed>