<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://www.aidalinux.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=Sort</id>
	<title>Sort - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://www.aidalinux.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=Sort"/>
	<link rel="alternate" type="text/html" href="http://www.aidalinux.ru/wiki/index.php?title=Sort&amp;action=history"/>
	<updated>2026-04-24T04:27:06Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>http://www.aidalinux.ru/wiki/index.php?title=Sort&amp;diff=72&amp;oldid=prev</id>
		<title>Langator: Новая страница: «== Вступление ==  Команда sort сортирует содержимое файла в алфавитном или нумерологическом п...»</title>
		<link rel="alternate" type="text/html" href="http://www.aidalinux.ru/wiki/index.php?title=Sort&amp;diff=72&amp;oldid=prev"/>
		<updated>2011-03-23T15:21:03Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «== Вступление ==  Команда sort сортирует содержимое файла в алфавитном или нумерологическом п...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Вступление ==&lt;br /&gt;
&lt;br /&gt;
Команда sort сортирует содержимое файла в алфавитном или нумерологическом порядке. Если задать несколько файлов, то команда sort соединит их и, рассортировав, выдаст единым выводом. По умолчанию, объектом сортировки будут строки, однако опции позволяют выбирать объект сортировки: колонки, столбцы и прочие элементы форматирования файла. Разделителем между ними служат пробелы, однако соответствующие опции позволяют задать иные разделители.&lt;br /&gt;
&lt;br /&gt;
Команда sort весьма древняя, она может служить образцом программирования утилит в ранних 70-х годах прошлого века. У команды множество опций, и их разнообразные сочетания, а также способы задания разделителей, хорошо развивают память и воображение.&lt;br /&gt;
&lt;br /&gt;
== Программа sort без опций ==&lt;br /&gt;
&lt;br /&gt;
Я составил список своих должников и записал их в файл debts.txt:&lt;br /&gt;
&lt;br /&gt;
  Vova: 100$ -- September 3  2008&lt;br /&gt;
  Sergey: 10$ -- December 30 2008&lt;br /&gt;
  Misha:  25$ -- May 12 2008&lt;br /&gt;
  Taras:  500$ -- June 24 2008&lt;br /&gt;
&lt;br /&gt;
Если мне придет в голову рассортировать должников по алфавиту, то я дам команду:&lt;br /&gt;
&lt;br /&gt;
  $ sort debts.txt&lt;br /&gt;
  &lt;br /&gt;
  Misha:  25$ -- May 12 2008&lt;br /&gt;
  Sergey: 10$ -- December 30 2008&lt;br /&gt;
  Taras:  500$ -- June 24 2008&lt;br /&gt;
  Vova: 100$ -- September 3  2008&lt;br /&gt;
&lt;br /&gt;
А могу и в обратном алфавиту порядке:&lt;br /&gt;
&lt;br /&gt;
  sort -r debts.txt&lt;br /&gt;
  &lt;br /&gt;
  Vova: 100$ -- September 3  2008&lt;br /&gt;
  Taras:  500$ -- June 24 2008&lt;br /&gt;
  Sergey: 10$ -- December 30 2008&lt;br /&gt;
  Misha:  25$ -- May 12 2008&lt;br /&gt;
&lt;br /&gt;
== Параметры sort ==&lt;br /&gt;
&lt;br /&gt;
=== Опции -n и -k ===&lt;br /&gt;
  &lt;br /&gt;
(--numeric-sort --key)&lt;br /&gt;
&lt;br /&gt;
Приходится рассматривать эти две опции вместе, так как они позволяют сразу ввести читателя в курс дела, а не рассматривать множество простых примеров.&lt;br /&gt;
&lt;br /&gt;
Опция -n используется всегда, когда нужно сортировать числа, разумеется в порядке возрастания (или убывания, добавив опцию -r).&lt;br /&gt;
&lt;br /&gt;
Опция -k позволяет задавать объект сортировки: все эти столбцы, колонки, и тому подобные элементы форматирования файла.&lt;br /&gt;
&lt;br /&gt;
Итак, я хочу выявить самых злостных должников по мере убывания долга:&lt;br /&gt;
&lt;br /&gt;
  sort -nrk 2 debts.txt&lt;br /&gt;
  &lt;br /&gt;
  Taras:  500$ -- June 24 2008&lt;br /&gt;
  Vova: 100$ -- September 3  2008&lt;br /&gt;
  Misha:  25$ -- May 12 2008&lt;br /&gt;
  Sergey: 10$ -- December 30 2008&lt;br /&gt;
&lt;br /&gt;
Опция -n сообщает команде, что сортировать придется числа, опция -r , что в обратном порядке, а опция -k задает объект - вторую колонку текста.&lt;br /&gt;
&lt;br /&gt;
У нас есть еще одна колонка с числами месяцев, можно для тренировки рассортировать список по числам разных месяцев, хотя никакого практического смысла это не имеет:&lt;br /&gt;
&lt;br /&gt;
  sort -nk 5 debts.txt&lt;br /&gt;
  &lt;br /&gt;
  Vova: 100$ -- September 3  2008&lt;br /&gt;
  Misha:  25$ -- May 12 2008&lt;br /&gt;
  Taras:  500$ -- June 24 2008&lt;br /&gt;
  Sergey: 10$ -- December 30 2008&lt;br /&gt;
&lt;br /&gt;
Видите, в пятой колонке числа идут по возрастающей. Древность программы сказывается еще и в том, что можно вводить опции по-разному. Например можно набрать:&lt;br /&gt;
&lt;br /&gt;
  sort -nk5 debts.txt&lt;br /&gt;
  &lt;br /&gt;
  Vova: 100$ -- September 3  2008&lt;br /&gt;
  Misha:  25$ -- May 12 2008&lt;br /&gt;
  Taras:  500$ -- June 24 2008&lt;br /&gt;
  Sergey: 10$ -- December 30 2008&lt;br /&gt;
&lt;br /&gt;
с тем же результатом. И даже:&lt;br /&gt;
&lt;br /&gt;
   sort -k5n debts.txt&lt;br /&gt;
   &lt;br /&gt;
   Vova: 100$ -- September 3  2008&lt;br /&gt;
   Misha:  25$ -- May 12 2008&lt;br /&gt;
   Taras:  500$ -- June 24 2008&lt;br /&gt;
   Sergey: 10$ -- December 30 2008&lt;br /&gt;
&lt;br /&gt;
Должен предупредить, что существует два стиля задания объекта сортировки. (Имейте в виду, по-английски эти объекты называются fields, что обычно переводится как поля. Если видите в манах слова: fields или поля, знайте - речь идет о колонках, столбцах, или иных элементах форматирования текста). Но вернемся к стилям задания этих самых &amp;quot;полей&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Новый стиль использует опцию -k и цифры, указывающие порядковый номер нужной колонки с начала строки (начиная с 1).Возьмем файл pay.txt:&lt;br /&gt;
&lt;br /&gt;
  1. I.A.Ivanov  1700&lt;br /&gt;
  2. J.P.Zaytsev 1955&lt;br /&gt;
  3. T.N.Petrova 1000&lt;br /&gt;
  4. A.D.Afonin  1300&lt;br /&gt;
&lt;br /&gt;
И дадим команду:&lt;br /&gt;
&lt;br /&gt;
  sort -k2 pay.txt&lt;br /&gt;
  &lt;br /&gt;
  4. A.D.Afonin  1300&lt;br /&gt;
  1. I.A.Ivanov  1700&lt;br /&gt;
  2. J.P.Zaytsev 1955&lt;br /&gt;
  3. T.N.Petrova 1000&lt;br /&gt;
&lt;br /&gt;
Сортировка произошла по первому символу второй колонки, что не дало нам никакой пользы. Изменим команду:&lt;br /&gt;
&lt;br /&gt;
  sort -k2.5 pay.txt&lt;br /&gt;
  &lt;br /&gt;
  4. A.D.Afonin  1300&lt;br /&gt;
  1. I.A.Ivanov  1700&lt;br /&gt;
  3. T.N.Petrova 1000&lt;br /&gt;
  2. J.P.Zaytsev 1955&lt;br /&gt;
&lt;br /&gt;
Указав пятый символ (считая точки) во второй колонке (-k2.5), мы получили алфавитный список сотрудников.&lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим файл ivanov.txt:&lt;br /&gt;
&lt;br /&gt;
  1. Filin F.F.   200$&lt;br /&gt;
  2. Ivanov R.P.  120$&lt;br /&gt;
  3. Alekseev I.O.  110$&lt;br /&gt;
  4. Ivanov N.S.  300$&lt;br /&gt;
  5. Klenov G.A.  233$&lt;br /&gt;
  6. Ivanov I.A.  178$&lt;br /&gt;
  7. Zaitsev B.I. 467$&lt;br /&gt;
&lt;br /&gt;
Рассортируем его строго по второй колонке, не принимая во внимание колонку с инициалами:&lt;br /&gt;
&lt;br /&gt;
  sort -k 2,2 ivanov.txt&lt;br /&gt;
  &lt;br /&gt;
  3. Alekseev I.O.  110$&lt;br /&gt;
  1. Filin F.F.   200$&lt;br /&gt;
  2. Ivanov R.P.  120$&lt;br /&gt;
  4. Ivanov N.S.  300$&lt;br /&gt;
  6. Ivanov I.A.  178$&lt;br /&gt;
  5. Klenov G.A.  233$&lt;br /&gt;
  7. Zaitsev B.I. 467$&lt;br /&gt;
&lt;br /&gt;
Для этого мы применили опцию -k 2,2. Первая двойка означает начало объекта сортировки (колонки текста), а вторая двойка через запятую - конец объекта сортировки. То есть команде запрещено использовать для сортировки символы после последней буквы второй колонки.&lt;br /&gt;
&lt;br /&gt;
Мы видим, что Ивановы идут в том же порядке, что и в исходном файле. А если мы хотим рассортировать Ивановых в алфавитном порядке их инициалов?&lt;br /&gt;
&lt;br /&gt;
  sort -k 2,3 ivanov.txt&lt;br /&gt;
  &lt;br /&gt;
  3. Alekseev I.O.  110$&lt;br /&gt;
  1. Filin F.F.   200$&lt;br /&gt;
  6. Ivanov I.A.  178$&lt;br /&gt;
  4. Ivanov N.S.  300$&lt;br /&gt;
  2. Ivanov R.P.  120$&lt;br /&gt;
  5. Klenov G.A.  233$&lt;br /&gt;
  7. Zaitsev B.I. 467$&lt;br /&gt;
&lt;br /&gt;
Мы приказали использовать для сортировки вторую и третью колонки текста (-k 2,3). Теперь Ивановы отсортированы и по инициалам. Но важнее знать, кто из Ивановых больше должен:&lt;br /&gt;
&lt;br /&gt;
  sort -k 2,2 -k 4n ivanov.txt&lt;br /&gt;
  &lt;br /&gt;
  3. Alekseev I.O.  110$&lt;br /&gt;
  1. Filin F.F.   200$&lt;br /&gt;
  2. Ivanov R.P.  120$&lt;br /&gt;
  6. Ivanov I.A.  178$&lt;br /&gt;
  4. Ivanov N.S.  300$&lt;br /&gt;
  5. Klenov G.A.  233$&lt;br /&gt;
  7. Zaitsev B.I. 467$&lt;br /&gt;
&lt;br /&gt;
Теперь инициалы не сортируются, так как первичная сортировка проводится строго по второй колонке (-k 2,2), а вторичная сортировка (-k 4n) по 4 колонке, в нумерологическом порядке, и только среди Ивановых (то есть тех, кто не различался по результатам первичной сортировки). Теперь становится понятно, зачем нужна такая сортировка - строго по заданному объекту.&lt;br /&gt;
&lt;br /&gt;
Надеюсь, что новый стиль написания опции -k стал понятен. Новый стиль применяется на всех современных версиях команды sort, включая GNU Coreutils, которыми укомплектованы все новые дистрибутивы Линукс.&lt;br /&gt;
&lt;br /&gt;
Вкратце коснусь старого стиля написания опции -k. Вот пример задания третьего столбца для нумерологической сортировки:&lt;br /&gt;
&lt;br /&gt;
*''Новый стиль'': sort -k 3,3n имя_файла&lt;br /&gt;
*''Старый стиль:'' sort +2 -3n имя_файла&lt;br /&gt;
&lt;br /&gt;
Старый стиль работает на новых версиях программы, но рассматривать его в подробностях я не стану, чтобы не запутаться самому и не запутать читателя. Нам хватит путаницы и с новым стилем.&lt;br /&gt;
&lt;br /&gt;
=== Опция -r ===&lt;br /&gt;
&lt;br /&gt;
(--reverse)&lt;br /&gt;
&lt;br /&gt;
Мы уже познакомились с ней. Она заставляет команду sort сортировать в обратном порядке. (От 'z' к 'a' и от 1000000 к 0).&lt;br /&gt;
&lt;br /&gt;
=== Опция -M ===&lt;br /&gt;
&lt;br /&gt;
(--month-sort)&lt;br /&gt;
&lt;br /&gt;
Я не могу не остановится на одной удивительной способности команды sort - она может сортировать даже месяцы. Вернемся к файлу debts.txt:&lt;br /&gt;
&lt;br /&gt;
  Vova: 100$ -- September 3  2008&lt;br /&gt;
  Sergey: 10$ -- December 30 2008&lt;br /&gt;
  Misha:  25$ -- May 12 2008&lt;br /&gt;
  Taras:  500$ -- June 24 2008&lt;br /&gt;
&lt;br /&gt;
Названия месяцев у нас в 4 колонке, поэтому пишем:&lt;br /&gt;
&lt;br /&gt;
  sort -k 4M debts.txt&lt;br /&gt;
&lt;br /&gt;
  Misha:  25$ -- May 12 2008&lt;br /&gt;
  Taras:  500$ -- June 24 2008&lt;br /&gt;
  Vova: 100$ -- September 3  2008&lt;br /&gt;
  Sergey: 10$ -- December 30 2008&lt;br /&gt;
&lt;br /&gt;
Вуаля! Мне это почему-то кажется чудом. Можно задать ту же команду и по-другому:&lt;br /&gt;
&lt;br /&gt;
  sort -Mk 4 debts.txt&lt;br /&gt;
  &lt;br /&gt;
  Misha:  25$ -- May 12 2008&lt;br /&gt;
  Taras:  500$ -- June 24 2008&lt;br /&gt;
  Vova: 100$ -- September 3  2008&lt;br /&gt;
  Sergey: 10$ -- December 30 2008&lt;br /&gt;
&lt;br /&gt;
Опция М преобразует первые три непробельные символа указанного столбца в заглавные буквы (Скажем, SEP означает SEPtember), а затем сравнивает их и располагает в порядке годового круга.&lt;br /&gt;
&lt;br /&gt;
До сих пор мы рассматривали файлы, в которых разделителем колонок или столбцов был пробел, что и установлено по умолчанию. Чтобы задать другой разделитель, необходимо использовать опцию -t.&lt;br /&gt;
&lt;br /&gt;
=== Опция -t ===&lt;br /&gt;
&lt;br /&gt;
(--field-separator=РАЗДЕЛИТЕЛЬ)&lt;br /&gt;
&lt;br /&gt;
Позволяет указать иной разделитель объектов сортировки вместо пробела. Вернемся к файлу pay.txt:&lt;br /&gt;
&lt;br /&gt;
  1. I.A.Ivanov  1700&lt;br /&gt;
  2. J.P.Zaytsev 1955&lt;br /&gt;
  3. T.N.Petrova 1000&lt;br /&gt;
  4. A.D.Afonin  1300&lt;br /&gt;
&lt;br /&gt;
В первый раз, чтобы рассортировать должников по фамилиям, мы указывали пятую букву в третьем столбце (считая разделителем столбцов пробелы). Есть другой способ решить эту задачу:&lt;br /&gt;
&lt;br /&gt;
  sort -t '.' -k4 pay.txt&lt;br /&gt;
  &lt;br /&gt;
  4. A.D.Afonin  1300&lt;br /&gt;
  1. I.A.Ivanov  1700&lt;br /&gt;
  3. T.N.Petrova 1000&lt;br /&gt;
  2. J.P.Zaytsev 1955&lt;br /&gt;
&lt;br /&gt;
Теперь мы задали разделителем точку и указали четвертую колонку.&lt;br /&gt;
&lt;br /&gt;
Давайте рассортируем по алфавиту шеллы, доступные в системе, указав разделителем слэш (-t '/'):&lt;br /&gt;
&lt;br /&gt;
  sort -t '/' -k2 /etc/shells&lt;br /&gt;
  &lt;br /&gt;
  /bin/ash&lt;br /&gt;
  /bin/bash&lt;br /&gt;
  /bin/csh&lt;br /&gt;
  /bin/ksh&lt;br /&gt;
  /bin/tcsh&lt;br /&gt;
  /bin/zsh &lt;br /&gt;
&lt;br /&gt;
В директории /etc масса файлов, в которых встречаются различные разделители. Часто это двоеточие:&lt;br /&gt;
&lt;br /&gt;
  sort -t ':' -k3n /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Эта команда рассортирует файл /etc/passwd в порядке возрастания идентификационных номеров пользователей. Проделайте этот пример самостоятельно, у него длинный вывод, боюсь мой редактор будет не в восторге.&lt;br /&gt;
&lt;br /&gt;
Надеюсь, с разделителями все ясно, правила их задания очень напоминают команду cut.&lt;br /&gt;
&lt;br /&gt;
=== Опция -c ===&lt;br /&gt;
&lt;br /&gt;
(--check)&lt;br /&gt;
&lt;br /&gt;
Эта опция проверяет порядок сортировки, сама ничего не сортируя. Создадим файл 123.txt:&lt;br /&gt;
&lt;br /&gt;
  3&lt;br /&gt;
  1&lt;br /&gt;
  4&lt;br /&gt;
  2&lt;br /&gt;
&lt;br /&gt;
Дадим команду:&lt;br /&gt;
&lt;br /&gt;
  sort -cn 123.txt&lt;br /&gt;
  &lt;br /&gt;
  sort: 123.txt:2: неправильный порядок: 1&lt;br /&gt;
&lt;br /&gt;
Вывод &amp;quot;неправильный порядок: 1&amp;quot; сообщает нам номер строки с первой ошибкой.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Опция -u ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(--unique)&lt;br /&gt;
&lt;br /&gt;
Скрывает одинаковые объекты. Если в процессе сортировки выявилось несколько одинаковых объектов, то будет выведен только первый из них, остальные проигнорированы:&lt;br /&gt;
&lt;br /&gt;
  sort -uk 2,2 ivanov.txt&lt;br /&gt;
  &lt;br /&gt;
  3. Alekseev I.O.  110$&lt;br /&gt;
  1. Filin F.F.   200$&lt;br /&gt;
  2. Ivanov R.P.  120$&lt;br /&gt;
  5. Klenov G.A.  233$&lt;br /&gt;
  7. Zaitsev B.I. 467$&lt;br /&gt;
&lt;br /&gt;
Остался только один Иванов из трех.&lt;br /&gt;
&lt;br /&gt;
Если бы мы задали команду чуть по-другому:&lt;br /&gt;
&lt;br /&gt;
  sort -uk2 ivanov.txt&lt;br /&gt;
  &lt;br /&gt;
  3. Alekseev I.O.  110$&lt;br /&gt;
  1. Filin F.F.   200$&lt;br /&gt;
  6. Ivanov I.A.  178$&lt;br /&gt;
  4. Ivanov N.S.  300$&lt;br /&gt;
  2. Ivanov R.P.  120$&lt;br /&gt;
  5. Klenov G.A.  233$&lt;br /&gt;
  7. Zaitsev B.I. 467$&lt;br /&gt;
&lt;br /&gt;
то все Ивановы остались бы на своих местах. Ответьте: почему? (Ответ в приложении [1]).&lt;br /&gt;
&lt;br /&gt;
=== Опция -b ===&lt;br /&gt;
&lt;br /&gt;
(--ignore-leading-blanks)&lt;br /&gt;
&lt;br /&gt;
Игнорирует пробелы в начале строк, и сортирует так, словно пробелов нет. Возьмем файл run.txt&lt;br /&gt;
&lt;br /&gt;
  dog&lt;br /&gt;
  cat&lt;br /&gt;
  horse&lt;br /&gt;
&lt;br /&gt;
Применим команду sort без опций:&lt;br /&gt;
&lt;br /&gt;
  sort run.txt&lt;br /&gt;
  &lt;br /&gt;
  horse&lt;br /&gt;
  cat&lt;br /&gt;
  dog&lt;br /&gt;
&lt;br /&gt;
Фактически произошла сортировка по количеству пробелов, так как пробел предшествует буквам в порядке сортировки. Введем команду:&lt;br /&gt;
&lt;br /&gt;
  sort -b run.txt&lt;br /&gt;
  &lt;br /&gt;
  cat&lt;br /&gt;
  dog&lt;br /&gt;
  horse&lt;br /&gt;
&lt;br /&gt;
Теперь строки отсортированы в алфавитном порядке, невзирая на пробелы.&lt;br /&gt;
&lt;br /&gt;
Немного усложним файл run.txt&lt;br /&gt;
&lt;br /&gt;
  horrible dog&lt;br /&gt;
  black  cat&lt;br /&gt;
  beautiful   horse&lt;br /&gt;
&lt;br /&gt;
И попробуем выстроить животных по алфавиту:&lt;br /&gt;
&lt;br /&gt;
  sort -k2 run.txt&lt;br /&gt;
  &lt;br /&gt;
  beautifull   horse&lt;br /&gt;
  black  cat&lt;br /&gt;
  horrible dog&lt;br /&gt;
&lt;br /&gt;
Ничего не выходит - сортируется количество пробелов. Но стоит добавить опцию -b&lt;br /&gt;
&lt;br /&gt;
  sort -bk2 run.txt&lt;br /&gt;
  &lt;br /&gt;
  black  cat&lt;br /&gt;
  horrible dog&lt;br /&gt;
  beautifull   horse&lt;br /&gt;
&lt;br /&gt;
как все становится на свои места.&lt;br /&gt;
&lt;br /&gt;
=== Опция -d ===&lt;br /&gt;
&lt;br /&gt;
(--dictionary-order)&lt;br /&gt;
&lt;br /&gt;
Признает только буквы, цифры и пробелы и сортирует как в словаре.&lt;br /&gt;
&lt;br /&gt;
=== Опция -i ===&lt;br /&gt;
&lt;br /&gt;
(--ignore-nonprinting)&lt;br /&gt;
&lt;br /&gt;
Весьма похожа на предыдущую опцию -d, но не такая &amp;quot;строгая&amp;quot;. Она признает только печатные символы, игнорируя все специальные.&lt;br /&gt;
&lt;br /&gt;
=== Опция -f ===&lt;br /&gt;
&lt;br /&gt;
(--ignore-case)&lt;br /&gt;
&lt;br /&gt;
При обычной сортировке, заглавные буквы идут прежде строчных:&lt;br /&gt;
&lt;br /&gt;
  sort case.txt&lt;br /&gt;
  &lt;br /&gt;
  Ivanov&lt;br /&gt;
  Zaitsev&lt;br /&gt;
  alfa&lt;br /&gt;
  kurtka&lt;br /&gt;
  romashka&lt;br /&gt;
&lt;br /&gt;
А с опцией -f все равны:&lt;br /&gt;
&lt;br /&gt;
  sort -f case.txt&lt;br /&gt;
  &lt;br /&gt;
  alfa&lt;br /&gt;
  Ivanov&lt;br /&gt;
  kurtka&lt;br /&gt;
  romashka&lt;br /&gt;
  Zaitsev&lt;br /&gt;
&lt;br /&gt;
=== Опция -g ===&lt;br /&gt;
&lt;br /&gt;
(--general-numeric-sort)&lt;br /&gt;
&lt;br /&gt;
Позволяет сортировать числа, записанные в общей математической форме. Возьмем файл notation.txt:&lt;br /&gt;
&lt;br /&gt;
  11.11&lt;br /&gt;
  1&lt;br /&gt;
  12.3&lt;br /&gt;
  567&lt;br /&gt;
  10e1&lt;br /&gt;
  10e0&lt;br /&gt;
  9&lt;br /&gt;
  345 &lt;br /&gt;
  8.95&lt;br /&gt;
  99&lt;br /&gt;
&lt;br /&gt;
и попробуем рассортировать его обычной опцией -n:&lt;br /&gt;
&lt;br /&gt;
  sort -n notation.txt&lt;br /&gt;
  &lt;br /&gt;
  1&lt;br /&gt;
  9&lt;br /&gt;
  10e0&lt;br /&gt;
  10e1&lt;br /&gt;
  99&lt;br /&gt;
  12.3&lt;br /&gt;
  345&lt;br /&gt;
  567&lt;br /&gt;
  8.95&lt;br /&gt;
  11.11&lt;br /&gt;
&lt;br /&gt;
и потерпим неудачу. Тогда применим опцию -g:&lt;br /&gt;
&lt;br /&gt;
  sort -g notation.txt&lt;br /&gt;
  &lt;br /&gt;
  1&lt;br /&gt;
  8.95&lt;br /&gt;
  9&lt;br /&gt;
  10e0&lt;br /&gt;
  11.11&lt;br /&gt;
  12.3&lt;br /&gt;
  99&lt;br /&gt;
  10e1&lt;br /&gt;
  345&lt;br /&gt;
  567&lt;br /&gt;
&lt;br /&gt;
Теперь числа выстроились по ранжиру. Нужно сказать, что применять опцию -g следует в крайних случаях, когда нельзя обойтись опцией -n. Дело в том, что опция -g медленнее, и на больших файлах это становится заметным. Кроме того, в Интернете появляются сообщения, что в некоторых версиях GNU Coreutils sort замечены сбои в работе опции -g на больших файлах (Больше 25Мб).&lt;br /&gt;
&lt;br /&gt;
=== Опция -T ===&lt;br /&gt;
&lt;br /&gt;
(--temporary-directory=КАТАЛОГ)&lt;br /&gt;
&lt;br /&gt;
Позволяет указать директорию для временных файлов, иную, чем положено по умолчанию (/tmp или $TMPDIR).&lt;br /&gt;
&lt;br /&gt;
  sort -T /имя_каталога filename&lt;br /&gt;
&lt;br /&gt;
При сортировке больших файлов программа создает временные файлы, и можно указать, где их разместить. Примера по очевидным причинам дать не могу, просто помните про эту опцию, если случится сортировать многомегабайтные файлы.&lt;br /&gt;
&lt;br /&gt;
=== Опция -S ===&lt;br /&gt;
&lt;br /&gt;
(--buffer-size=РАЗМЕР)&lt;br /&gt;
&lt;br /&gt;
Также пригодится для сортировки больших файлов. Она создаст в основной памяти буфер указанного размера.&lt;br /&gt;
&lt;br /&gt;
Кстати, коли речь зашла о работе с большими файлами, то полезно бывает переместить эти процессы на задний план, чтобы можно было работать, не дожидаясь завершения процесса:&lt;br /&gt;
&lt;br /&gt;
  sort большой_файл &amp;amp;&lt;br /&gt;
&lt;br /&gt;
=== Опция -s ===&lt;br /&gt;
&lt;br /&gt;
(--stable)&lt;br /&gt;
&lt;br /&gt;
Эта опция отменяет пересортировку. Что это такое? - Допустим, мы сортировали некий файл по определенным, нужным нам объектам сортировки (полям, столбцам, колонкам, символам внутри колонок и так далее), применяли вторичную сортировку (как в примере sort -k 2,2 -k 4n ivanov.txt), но все объекты, выбранные нами, оказались одинаковыми (равными). В этом случае, по умолчанию, команда sort проводит пересортировку, считая объектом сортировки всю строку в целом (как в случае сортировки без опций). Если мы хотим сохранить первоначальный порядок строк файла, и не проводить финальную пересортировку, то мы применяем опцию -s.&lt;br /&gt;
&lt;br /&gt;
=== Опция -z ===&lt;br /&gt;
&lt;br /&gt;
(--zero-terminated)&lt;br /&gt;
&lt;br /&gt;
Эта опция рассматривает исходный файл как набор строк, разделенных не знаком переноса строки, а нулевым байтом. Для чего это может понадобиться, я не знаю. Единственное, что мне удалось найти, это туманные указания, что эта опция может оказаться полезной в составе программных каналов (pipes) с такими командами как 'perl -0', 'find -print0', и 'xargs -0' для сортировки произвольных файловых имен. Я пока не разбирался с перечисленными программами и не могу ничего сказать по этому поводу. Я также пробовал подставлять опцию -z в многочисленные примеры из этой статьи, но никакой сортировки после добавления этой опции не происходило.&lt;br /&gt;
&lt;br /&gt;
=== Опция -o ===&lt;br /&gt;
&lt;br /&gt;
(--output=ФАЙЛ)&lt;br /&gt;
&lt;br /&gt;
Видимо пережиток прошлого, когда не было перенаправления вывода. С помощью этой опции можно задать файл, куда будет помещен вывод команды вместо стандартного вывода на экран дисплея.&lt;br /&gt;
&lt;br /&gt;
== Послесловие ==&lt;br /&gt;
&lt;br /&gt;
Оставшиеся опции варьируют в различных мануалах и руководствах, они достаточно понятны интуитивно, и не требуют специального рассмотрения. Если какой-то из опций нет в вашем мане, не беда, скорее всего опция поддерживается вашей версией программы. Попробуйте, чем вы рискуете? Но попадаются опции, не поддерживаемые GNU Coreutils sort, как например опции -R и --random-source=file, позволяющие &amp;quot;рассортировать&amp;quot; строки и прочие объекты в случайном порядке.&lt;br /&gt;
&lt;br /&gt;
Другое дело сочетания различных опций друг с другом. Если вы соорудили заковыристое заклинание из множества разных опций, а оно не работает, попробуйте убрать ту или другую опцию, может быть поможет. А лучше идти от простого к сложному, постепенно усложняя команду, пока не достигнете нужного результата. Хорошо помогает набрать вашу команду в поисковой строке Гугла, вдруг повезет. Кстати, только этим способом я смог разобраться с некоторыми опциями, о которых пишу в этой статье.&lt;br /&gt;
&lt;br /&gt;
== Команда sort и кириллица ==&lt;br /&gt;
&lt;br /&gt;
Команда sort работает с нашими буквами неадекватно.&lt;br /&gt;
&lt;br /&gt;
== Резюме команды sort ==&lt;br /&gt;
&lt;br /&gt;
Чрезвычайно полезная и &amp;quot;мощная&amp;quot; команда. С ее помощью не проблема выявить в огромной директории файлы, которые вы вчера потеряли (по дате модификации), или собрать &amp;quot;в кучу&amp;quot; все линки, чтобы их проверить, и так далее. А в качестве фильтра в программных каналах (pipes), эта команда просто незаменима и позволяет творить чудеса.&lt;br /&gt;
&lt;br /&gt;
== Приложение ==&lt;br /&gt;
&lt;br /&gt;
[1] Ответ на задачу про Ивановых.&lt;br /&gt;
&lt;br /&gt;
В первом случае мы задали сортировку строго по второй колонке (-uk 2,2), поэтому программа видела всех Ивановых одинаковыми, и включила опцию -u.&lt;br /&gt;
&lt;br /&gt;
Во втором случае мы задали сортировку, не указав конец объекта сортировки (-uk2), и программа сортировала Ивановых по следующим колонкам (могла бы до конца строки). В этом случае одинаковых объектов выявлено не было, и опция -u не включилась.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Информация взята с [http://open-club.ru/main/reading/HuMan_sort open-club.ru]&lt;/div&gt;</summary>
		<author><name>Langator</name></author>
	</entry>
</feed>