Сортировка (Unix) - Sort (Unix)
В Сортировать команда | |
Оригинальный автор (ы) | Кен Томпсон (AT&T Bell Laboratories ) |
---|---|
Разработчики) | Разные Открытый исходный код и коммерческий Разработчики |
изначальный выпуск | 3 ноября 1971 г. |
Операционная система | Мультики, Unix, Unix-подобный, V, План 9, Inferno, MSX-DOS, IBM i |
Тип | Команда |
Лицензия | coreutils: GPLv3 + |
В вычисление, Сортировать это стандарт командная строка программа Unix и Unix-подобный операционные системы, который печатает строки своего ввода или конкатенацию всех файлы перечислены в ее список аргументов в отсортированном порядке. Сортировка выполняется на основе одного или нескольких ключей сортировки, извлеченных из каждой строки ввода. По умолчанию в качестве ключа сортировки используется весь ввод. Пробел - это разделитель полей по умолчанию. Команда поддерживает ряд параметры командной строки это может варьироваться в зависимости от реализации. Например, "-р
"флаг изменит порядок сортировки на обратный.
История
А Сортировать
команда, которая вызывает общую функцию сортировки, была впервые реализована в Мультики.[1] Позже он появился в Версия 1 Unix. Эта версия была изначально написана Кен Томпсон в AT&T Bell Laboratories. К Версия 4 Томпсон модифицировал его, чтобы использовать трубы, но sort сохранила возможность назвать выходной файл, поскольку он использовался для сортировки файла на месте. В Версия 5, Томпсон изобрел "-" для обозначения стандартный ввод.[2]
Версия Сортировать в комплекте GNU coreutils был написан Майком Хэртелем и Полом Эггертом.[3] Эта реализация использует Сортировка слиянием алгоритм.
Подобные команды доступны во многих других операционных системах, например в Сортировать команда является частью ASCII с Инструменты MSX-DOS2 за MSX-DOS версия 2.[4]
В Сортировать команда также была перенесена в IBM i Операционная система.[5]
Синтаксис
сортировать [ВАРИАНТ] ... [ФАЙЛ] ...
Без ФАЙЛ
, или когда ФАЙЛ
является -
, команда читает из стандартный ввод.
Параметры
-b | Игнорирует начальные пробелы. |
-d | Учитываются только пробелы и буквенно-цифровые символы. |
-f | Загибайте нижний регистр к верхнему регистру. |
-грамм | Сравнивает по общему числовому значению. |
-я | Учитываются только печатные символы. |
-M | Сравнивает (неизвестно) <'JAN' <... <'DEC'. |
-час | Сравните удобочитаемые числа (например, 2K 1G). |
-n | Сравнивает по числовому значению строки. |
-Р | Перемешивает, но группирует одинаковые ключи. Смотрите также: шуф |
-р | Отменяет результат сравнения. |
Примеры
Сортировать файл в алфавитном порядке
$ Кот телефонная книгаСмит, Бретт 555-4321 Доу, Джон 555-1234 Доу, Джейн 555-3214 Эйвери, Кори 555-4132 Фогарти, Сьюзи 555-2314 $ Сортировать телефонная книгаЭйвери, Кори 555-4132 Доу, Джейн 555-3214 Доу, Джон 555-1234 Фогарти, Сьюзи 555-2314 Смит, Бретт 555-4321
Сортировать по номеру
В -n
опция позволяет отсортировать программу по числовому значению. В ду команда производит вывод, который начинается с числа, размера файла, поэтому его вывод можно передать по конвейеру Сортировать для создания списка файлов, отсортированных по размеру (возрастанию):
$ du / bin / * | sort -n4 / bin / имя домена24 / бин / лс102 / бен / ш304 / bin / csh
Столбцы или поля
Использовать -k
возможность сортировки по определенному столбцу. Например, используйте "-k 2
"для сортировки по второму столбцу. В старых версиях сортировки +1
опция сделала программу сортировкой по второму столбцу данных (+2
для третьего и т. д.). Это использование не рекомендуется.
$ Кот почтовый индексАдам 12345Боб 34567Джо 56789Сэм 45678Венди 23456 $ Сортировать -k 2n почтовый индексАдам 12345 Венди 23456 Боб 34567 Сам 45678 Джо 56789
Сортировать по нескольким полям
В -к м, п
опция позволяет сортировать по ключу, который потенциально состоит из нескольких полей (начиная с столбца м
, в конце столбца п
):
$ Кот квотафред 2000bob 1000an 1000chad 1000don 1500eric 500 $ Сортировать -k2,2 -k1,1 квотаeric 500an 1000bob 1000chad 1000don 1500fred 2000
Здесь первая сортировка выполняется по столбцу 2. -k2,2
определяет сортировку по ключу, начиная и заканчивая столбцом 2. Если -k2
Вместо этого используется ключ сортировки, который начинается со столбца 2 и продолжается до конца строки, охватывая все поля между ними. В п
означает «числовой порядок». -k1,1
диктует разрыв связей, используя значение в столбце 1, по умолчанию сортируя в алфавитном порядке. Обратите внимание, что bob и chad имеют одинаковую квоту и в конечном выводе отсортированы в алфавитном порядке.
Сортировка файла с разделителями каналов
$ sort -k2,2, -k1,1 -t '|' почтовый индекс: Adam | 12345Wendy | 23456Sam | 45678Joe | 56789Bob | 34567
Сортировка файла с разделителями табуляцией
Сортировка файла с значения, разделенные табуляцией требует символ табуляции быть указанным в качестве разделителя столбцов. На этой иллюстрации используется обозначение оболочки в виде долларовых кавычек.[6][7]чтобы указать вкладку как E escape-последовательность.
$ сортировать -k2,2 -t $' ' телефонная книга Доу, Джон 555-1234Фогарти, Сьюзи 555-2314Доу, Джейн 555-3214Эйвери, Кори 555-4132Смит, Бретт 555-4321
Сортировка в обратном порядке
В -р
опция просто меняет порядок сортировки:
$ Сортировать -rk 2n почтовый индексДжо 56789 Сэм 45678 Боб 34567 Венди 23456 Адам 12345
Сортировка случайным образом
Реализация GNU имеет -R --случайная сортировка
вариант на основе хеширования; это не полное случайное перемешивание, потому что оно сортирует идентичные строки вместе. Истинная случайная сортировка обеспечивается утилитой Unix шуф.
Сортировать по версии
Реализация GNU имеет -V --версия-сортировка
вариант, который является естественным видом номеров (версий) в тексте. Это работает для IP-адресов.
Смотрите также
Рекомендации
- ^ Команды Multics
- ^ Макилрой, М.Д. (1987). Читатель Research Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (Технический отчет). CSTR. Bell Labs. 139.
- ^ https://linux.die.net/man/1/sort
- ^ Руководство пользователя MSX-DOS2 Tools от ASCII Corporation
- ^ IBM. "Qshell для программирования IBM System i версии 7.2" (PDF). Получено 2020-09-05.
- ^ «Справочное руководство GNU Bash для Bash, версия 4.2: раздел 3.1.2.4 Цитирование ANSI-C». Free Software Foundation, Inc. 28 декабря 2010 г.. Получено 1 февраля 2013.
Особо обрабатываются слова вида $ 'строка'. Слово заменяется строкой с заменой экранированных символов обратной косой черты, как указано в стандарте ANSI C.
- ^ Fowler, Glenn S .; Корн, Дэвид Г.; Во, Кием-Фонг. «Часто задаваемые вопросы о KornShell». В архиве из оригинала от 27.05.2013. Получено 3 марта 2015.
Синтаксис строкового литерала $ '...' был добавлен в ksh93 для решения проблемы ввода специальных символов в скриптах. Он использует правила ANSI-C для перевода строки между "...".
внешняя ссылка
- Исходная справочная страница сортировки Оригинальная программа BSD Unix справочная страница
- Linux Пользовательские команды Руководство –
- План 9 Руководство программиста, том 1 –
- Inferno Общие команды Руководство –
- Подробная информация о сортировке на Softpanorama