sort команда | |
Оригинальный автор (ы) | Кен Томпсон ( AT&T Bell Laboratories ) |
---|---|
Разработчики) | Различные разработчики с открытым исходным кодом и коммерческие разработчики |
изначальный выпуск | 3 ноября 1971 г . |
Операционная система | Multics , Unix , Unix-like , V , Plan 9 , Inferno , MSX-DOS , IBM i |
Платформа | Кроссплатформенность |
Тип | Команда |
Лицензия | coreutils : GPLv3 + |
В вычислении , сортировки является стандартной командной строки программа 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
есть -
, команда читает из стандартного ввода .
Параметры [ править ]
Имя | Описание | Unix | План 9 | Inferno | FreeBSD | Linux | MSX-DOS | IBM i |
---|---|---|---|---|---|---|---|---|
-b , --ignore-lead-blankks | Игнорирует начальные пробелы. | да | да | Нет | да | да | Нет | да |
-c | Убедитесь, что входной файл отсортирован. | Нет | да | Нет | да | да | Нет | да |
-C | Подобно -c, но не сообщает о первой плохой строке. | Нет | Нет | Нет | да | да | Нет | Нет |
-d , --dictionary-order | Учитываются только пробелы и буквенно-цифровые символы. | да | да | Нет | да | да | Нет | да |
-f , --ignore-case | Загибайте нижний регистр к верхнему регистру. | да | да | Нет | да | да | Нет | да |
-g , --general-numeric-sort , --sort = общий-числовой | Сравнивает по общему числовому значению. | да | да | Нет | да | да | Нет | Нет |
-h , --human-numeric-sort , --sort = человек-числовой | Сравните удобочитаемые числа (например, 2K 1G). | да | Нет | Нет | да | да | Нет | Нет |
-i , --ignore-nonprinting | Учитываются только печатные символы. | да | да | Нет | да | да | Нет | да |
-k , --key = POS1 [, POS2 ] | Начните ключ с POS1 (начало 1), закончите его с POS2 (конец строки по умолчанию) | Нет | Нет | Нет | да | да | Нет | Нет |
-м | Только слияние; предполагается, что входные файлы предварительно отсортированы. | Нет | да | Нет | да | да | Нет | да |
-M , --month-sort , --sort = месяц | Сравнивает (неизвестно) <'JAN' <... <'DEC'. | да | да | Нет | да | да | Нет | Нет |
-n , --numeric-sort , --sort = числовой | Сравнивает по числовому значению строки. | да | да | да | да | да | Нет | да |
-o ВЫХОД | Использует файл OUTPUT вместо стандартного вывода. | Нет | да | Нет | да | да | Нет | да |
-r , --reverse | Отменяет результат сравнения. | да | да | да | да | да | Нет | да |
-R , --random-sort , --sort = случайный | Перемешивает, но группирует одинаковые ключи. См. Также: shuf | да | Нет | Нет | да | да | Нет | Нет |
-s | Стабилизирует сортировку, отключив сравнение в крайнем случае. | Нет | Нет | Нет | да | да | Нет | Нет |
-S размер , --buffer-size = размер | Используйте размер для максимального размера буфера памяти. | Нет | Нет | Нет | да | Нет | Нет | Нет |
-tx | «Символ табуляции» разделяет поля - x. | Нет | да | Нет | Нет | да | Нет | да |
-t символ , --field-separator = символ | Использует символ вместо перехода от непустого к пустому. | Нет | Нет | Нет | да | да | Нет | Нет |
-T реж , --temporary-каталог = реж | Использует dir для временных файлов. | Нет | да | Нет | да | да | Нет | Нет |
-u , --unique | Уникальная обработка для подавления всех, кроме одной, в каждом наборе строк с одинаковыми ключами. | Нет | да | Нет | да | да | Нет | да |
-V , --version-sort | Естественный вид номеров (версий) в тексте | Нет | Нет | Нет | да | да | Нет | Нет |
-w | Подобно -i, но игнорирует только табуляции и пробелы. | Нет | да | Нет | Нет | Нет | Нет | Нет |
-z , --zero-terminated | Конечные строки с 0 байтами, а не новой строкой | Нет | Нет | Нет | да | да | Нет | Нет |
--помощь | Показать справку и выйти | Нет | Нет | Нет | да | да | Нет | Нет |
--версия | Вывести информацию о версии и выйти | Нет | Нет | Нет | да | да | Нет | Нет |
/Р | Отменяет результат сравнения. | Нет | Нет | Нет | Нет | Нет | да | Нет |
/ S | Укажите количество цифр, чтобы определить, сколько цифр каждой строки следует оценивать. | Нет | Нет | Нет | Нет | Нет | да | Нет |
/ А | Сортировать по коду ASCII. | Нет | Нет | Нет | Нет | Нет | да | Нет |
/ЧАС | Включите скрытые файлы при использовании подстановочных знаков. | Нет | Нет | Нет | Нет | Нет | да | Нет |
Примеры [ править ]
Сортировать файл в алфавитном порядке [ править ]
Телефонная книга $ 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
- уникальный
- шуф
Ссылки [ править ]
- ^ "Команды Multics" . www.multians.org .
- Перейти ↑ McIlroy, MD (1987). Читатель Research Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (технический отчет). CSTR. Bell Labs. 139.
- ^ "sort (1): сортировка строк текстовых файлов - справочная страница Linux" . linux.die.net .
- ^ «Руководство пользователя MSX-DOS2 Tools - MSX-DOS2 TOOLS ユ ー ザ ー ズ マ ニ ュ ア ル» . 1 апреля 1993 г. - через Интернет-архив.
- ^ IBM . «Qshell для программирования IBM System i версии 7.2» (PDF) . Проверено 5 сентября 2020 .
- ^ "Справочное руководство GNU Bash, для Bash, версия 4.2: раздел 3.1.2.4 Цитирование ANSI-C" . Фонд свободного программного обеспечения, Inc. 28 декабря 2010 . Проверено 1 февраля 2013 года .
Особо обрабатываются слова вида $ 'строка'. Слово расширяется до строки с замененными символами, экранированными обратной косой чертой, в соответствии со стандартом ANSI C.
- ^ Фаулер, Гленн С .; Корн, Дэвид Г .; Во, Кием-Фонг. «Часто задаваемые вопросы о KornShell» . Архивировано 27 мая 2013 года . Дата обращения 3 марта 2015 .
Синтаксис строкового литерала $ '...' был добавлен в ksh93 для решения проблемы ввода специальных символов в скриптах.
Он использует правила ANSI-C для перевода строки между "...".
Дальнейшее чтение [ править ]
- Шоттс (младший), Уильям Э. (2012). Командная строка Linux: полное введение . Пресс без крахмала . ISBN 978-1593273897.
- МакЭлхерн, Кирк (2006). Командная строка Mac OS X: Unix под капотом . Джон Вили и сыновья . ISBN 978-0470113851.
Внешние ссылки [ править ]
В Wikibook Guide to Unix есть страница по теме: Команды |
- Оригинал Сортировать страница руководства Оригинальная программа BSD Unix в страницу руководства
- - Руководство по командам пользователя Linux
- - Руководство программиста Plan 9 , том 1
- - Руководство по общим командам Inferno
- Подробная информация о сортировке на Softpanorama