Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В вычислении , сортировки является стандартной командной строки программа Unix и Unix-подобных операционных систем , что печатает линии его ввода или конкатенации всех файлов , перечисленных в списке аргументов в отсортированном порядке. Сортировка выполняется на основе одного или нескольких ключей сортировки, извлеченных из каждой строки ввода. По умолчанию в качестве ключа сортировки используется весь ввод. Пробел - это разделитель полей по умолчанию. Команда поддерживает ряд параметров командной строки, которые могут различаться в зависимости от реализации. Например, -rфлаг " " изменит порядок сортировки на обратный.

История [ править ]

sortКоманда , которая вызывает общую сортировку объект впервые была реализована в Multics . [1] Позже он появился в версии 1 Unix . Эта версия была изначально написана Кеном Томпсоном из AT&T Bell Laboratories . В версии 4 Томпсон модифицировал его для использования каналов , но при сортировке сохранилась возможность именовать выходной файл, поскольку он использовался для сортировки файла на месте. В версии 5 Томпсон изобрел знак «-» для обозначения стандартного ввода . [2]

Версия sort в составе GNU coreutils была написана Майком Хэртелом и Полом Эггертом. [3] В этой реализации используется алгоритм сортировки слиянием .

Подобные команды доступны на многих других операционных систем, например, своего рода команда является частью ASCII «S MSX-DOS2 Инструменты для MSX-DOS версии 2. [4]

Команда sort также была перенесена в операционную систему IBM i . [5]

Синтаксис [ править ]

sort [OPTION] ... [FILE] ...

Если нет FILEили когда FILEесть -, команда читает из стандартного ввода .

Параметры [ править ]

Примеры [ править ]

Сортировать файл в алфавитном порядке [ править ]

Телефонная книга $ cat Смит, Бретт 555-4321 Доу, Джон 555-1234 Доу, Джейн 555-3214 Эйвери, Кори 555-4132 Фогарти, Сьюзи 555-2314
Телефонная книга $ sort Avery, Cory 555-4132 Doe, Jane 555-3214 Doe, John 555-1234 Fogarty, Suzie 555-2314 Smith, Brett 555-4321

Сортировать по номеру [ редактировать ]

-nОпция делает программу рода в соответствии с числовым значением. Команда du производит вывод, который начинается с числа, размера файла, поэтому его вывод можно передать по конвейеру для сортировки, чтобы получить список файлов, отсортированных по размеру (возрастанию):

$ du / bin / * | sort -n 4 / bin / имя домена 24 / bin / ls 102 / bin / sh 304 / bin / csh

Столбцы или поля [ править ]

Воспользуйтесь -kопцией сортировки по определенному столбцу. Например, используйте " -k 2" для сортировки по второму столбцу. В старых версиях сортировки +1опция делала программу сортировкой по второму столбцу данных ( +2по третьему и т. Д.). Это использование не рекомендуется.

$ cat почтовый индекс Адам 12345 Боб 34567 Джо 56789 Сэм 45678 Венди 23456
$ sort -k 2n почтовый индекс Адам 12345 Венди 23456 Боб 34567 Сэм 45678 Джо 56789

Сортировка по нескольким полям [ править ]

Эта -k m,nопция позволяет вам сортировать по ключу, который потенциально состоит из нескольких полей (начало в столбце m, конец в столбце n):

$ cat quota фред 2000 боб 1000 на 1000 чад 1000 дон 1500 эрик 500
$ sort -k2,2 -k1,1 quota eric 500 an 1000 bob 1000 chad 1000 don 1500 fred 2000

Здесь первая сортировка выполняется с использованием столбца 2. -k2,2определяет сортировку по ключу, начинающемуся и заканчивающемуся столбцом 2. Если -k2вместо этого используется, ключ сортировки будет начинаться в столбце 2 и расширяться до конца строки, охватывая все поля между ними. . Это nозначает «числовой порядок». -k1,1диктует разрыв связей, используя значение в столбце 1, по умолчанию сортируя в алфавитном порядке. Обратите внимание, что bob и chad имеют одинаковую квоту и в конечном выводе отсортированы в алфавитном порядке.

Сортировка файла с разделителями каналов [ править ]

$ sort -k2,2, -k1,1 -t '|' почтовый индекс Адам | 12345 Венди | 23456 Сэм | 45678 Джо | 56789 Боб | 34567

Сортировка файла с разделителями табуляцией [ править ]

Сортировка файла с вкладки значений , разделенных требует символ табуляции , который будет указан в качестве разделителя столбцов. Эта иллюстрация использует доллар кавычки обозначения командного интерпретатора [6] [7] , чтобы указать вкладку как последовательность C побег .

$ sort -k2,2 -t $ '\ t' телефонная книга Доу, Джон 555-1234 Фогарти, Сьюзи 555-2314 Доу, Джейн 555-3214 Эйвери, Кори 555-4132 Смит, Бретт 555-4321

Сортировка в обратном порядке [ править ]

-rВариант просто меняет порядок сортировки:

$ sort -rk 2n почтовый индекс Джо 56789 Сэм 45678 Боб 34567 Венди 23456 Адам 12345

Сортировать в случайном порядке [ править ]

В реализации GNU есть -R --random-sortопция, основанная на хешировании; это не полное случайное перемешивание, потому что оно сортирует идентичные строки вместе. Истинная случайная сортировка обеспечивается утилитой Unix shuf .

Сортировать по версии [ редактировать ]

В реализации GNU есть -V --version-sortопция, которая представляет собой естественный вид номеров (версий) в тексте. Это работает для IP-адресов.

См. Также [ править ]

  • Сопоставление
  • Список команд Unix
  • уникальный
  • шуф

Ссылки [ править ]

  1. ^ "Команды Multics" . www.multians.org .
  2. Перейти ↑ McIlroy, MD (1987). Читатель Research Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (технический отчет). CSTR. Bell Labs. 139.
  3. ^ "sort (1): сортировка строк текстовых файлов - справочная страница Linux" . linux.die.net .
  4. ^ «Руководство пользователя MSX-DOS2 Tools - MSX-DOS2 TOOLS ユ ー ザ ー ズ マ ニ ュ ア ル» . 1 апреля 1993 г. - через Интернет-архив.
  5. ^ IBM . «Qshell для программирования IBM System i версии 7.2» (PDF) . Проверено 5 сентября 2020 .
  6. ^ "Справочное руководство GNU Bash, для Bash, версия 4.2: раздел 3.1.2.4 Цитирование ANSI-C" . Фонд свободного программного обеспечения, Inc. 28 декабря 2010 . Проверено 1 февраля 2013 года . Особо обрабатываются слова вида $ 'строка'. Слово расширяется до строки с замененными символами, экранированными обратной косой чертой, в соответствии со стандартом ANSI C.
  7. ^ Фаулер, Гленн С .; Корн, Дэвид Г .; Во, Кием-Фонг. «Часто задаваемые вопросы о KornShell» . Архивировано 27 мая 2013 года . Дата обращения 3 марта 2015 . Синтаксис строкового литерала $ '...' был добавлен в ksh93 для решения проблемы ввода специальных символов в скриптах. Он использует правила ANSI-C для перевода строки между "...".

Дальнейшее чтение [ править ]

  • Шоттс (младший), Уильям Э. (2012). Командная строка Linux: полное введение . Пресс без крахмала . ISBN 978-1593273897.
  • МакЭлхерн, Кирк (2006). Командная строка Mac OS X: Unix под капотом . Джон Вили и сыновья . ISBN 978-0470113851.

Внешние ссылки [ править ]

  • Оригинал Сортировать страница руководства Оригинальная программа BSD Unix в страницу руководства
  • sort(1) -  Руководство по командам пользователя Linux
  • sort(1) -  Руководство программиста Plan 9 , том 1
  • sort(1) -  Руководство по общим командам Inferno
  • Подробная информация о сортировке на Softpanorama