Топ питань
Часова шкала
Чат
Перспективи
Sort
З Вікіпедії, вільної енциклопедії
Remove ads
sort — це програма Unix-подібних операційних систем, яка повертає текст у відсортованому порядку. Вхідні дані вона отримує через stdin або з файлів які були задані через аргументи. Команда підтримує низку параметрів командного рядка, які можуть відрізнятися залежно від реалізації, котрі керують в якому порядку сортувати дані.
Історія
Команда sort
, яка реалізовувала тривіальне сортування, була вперше реалізована в Multics.[1] Пізніше sort
з'явилась у версії UNIX System v1
. Її написав Кен Томпсон в AT&T Bell Laboratories. До UNIX System v4
команда sort
потребувала опцію назви вхідного файлу, оскільки вона використовувалася для сортування файлів. Потім Томпсон модифікував її для використання конвеєрів. А в UNIX version 5 Томпсон винайшов значення «-
» як ім'я файлу, що означало що замість файлу дані для сортування поступатимуть зі стандартного введення. Зараз такий підхід часто використовується в інших командах, таких як tar.
Версія sort
, яка включена в GNU coreutils, була написано Майком Хертелем і Полом Еггертом.[2] Ця реалізація використовує алгоритм сортування злиттям.
Подібні команди доступні в багатьох інших операційних системах.
Remove ads
Синтаксис
Узагальнити
Перспектива
sort [ОПЦІї]... [ФАЙЛ]...
Якщо параметр ФАЙЛ
відсутній, або коли ФАЙЛ
дорівнює -
, команда читає дані зі стандартного вводу.
Параметри
Підтримка опції та функціональності в залежності від дистрибутива.
![]() | Ця Sort_(computing) містить неперекладені фрагменти англійською мовою. |
Remove ads
Приклади
Узагальнити
Перспектива
Сортування файлу в алфавітному порядку
Нехай у нас є телефонна книга:
$ cat phonebook
ТКАЧЕНКО НАТАЛІЯ 123-1324
БОНДАРЕНКО ОЛЕНА 123-1234
КОВАЛЕНКО ТЕТЯНА 123-3241
МЕЛЬНИК ВОЛОДИМИР 123-2132
ШЕВЧЕНКО ОЛЕКСАНДР 123-3214
КРАВЧЕНКО СЕРГІЙ 123-4321
Відсортуємо її:
$ sort phonebook
БОНДАРЕНКО ОЛЕНА 123-1234
КОВАЛЕНКО ТЕТЯНА 123-3241
КРАВЧЕНКО СЕРГІЙ 123-4321
МЕЛЬНИК ВОЛОДИМИР 123-2132
ТКАЧЕНКО НАТАЛІЯ 123-1324
ШЕВЧЕНКО ОЛЕКСАНДР 123-3214
Це алфавітне сортування, за замовчуванням сортує згідно таблиці кодування UTF-8 (або ASCII для певних значень). В алфавітному сортуванні значення рядка 10
більше ніж 1, але
менше ніж 2
, тому що 2
порівнюється зі значенням першого символу 1
з рядка 10
.
Нехай у нас у файлі numbers рядки з числами 1, 2, 3, 10, 11, 12, 100, 101, 111
$ sort numbers
1
10
100
101
11
111
12
2
3
Сортування за значенням числа
Опція -n
змушує програму сортувати відповідно до числового значення:
$ sort -n numbers
1
2
3
10
11
12
100
101
111
Стовпці, колонки, або поля
Опція -k
використовується для сортування за певним стовпцем. Наприклад " -k 2
" відсортує телефонну книгу за ім'ям, а -k 3 за номером телефона, розглядаючи пробіл (або суміжні пробіли) як, символ що розділяє стовпці (сепаратор).
$ cat phonebook | sort -k 2
МЕЛЬНИК ВОЛОДИМИР 123-2132
ТКАЧЕНКО НАТАЛІЯ 123-1324
ШЕВЧЕНКО ОЛЕКСАНДР 123-3214
БОНДАРЕНКО ОЛЕНА 123-1234
КРАВЧЕНКО СЕРГІЙ 123-4321
КОВАЛЕНКО ТЕТЯНА 123-3241
$ cat phonebook | sort -k 3
БОНДАРЕНКО ОЛЕНА 123-1234
ТКАЧЕНКО НАТАЛІЯ 123-1324
МЕЛЬНИК ВОЛОДИМИР 123-2132
ШЕВЧЕНКО ОЛЕКСАНДР 123-3214
КОВАЛЕНКО ТЕТЯНА 123-3241
КРАВЧЕНКО СЕРГІЙ 123-4321
Сортування у випадковому порядку
Реалізація GNU має опцію -R --random-sort
, кожен запуск такого сортування видає рядки в випадковому порядку, можна сказати що випадково перемішує рядки. Але це не є повністю чесне випадкове перемішування, оскільки воно сортує на основі хешування рядка та випадкових даних, і виводить ідентичні рядки разом. Справжнє випадкове сортування забезпечує утиліта shuf.
Сортувати за версією
Реалізація GNU має опцію -V --version-sort
, це сортування номерів версій в з урахуванням majority, крапки як символу сепаратора, та числового порядку значень, пропускаючи початкові нулі, а також літер що йдуть за числами. Виявляється що це працює і для адрес IPv4.
Remove ads
Примітки
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads