Топ питань
Часова шкала
Чат
Перспективи

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 [ОПЦІї]... [ФАЙЛ]...

Якщо параметр ФАЙЛ відсутній, або коли ФАЙЛ дорівнює -, команда читає дані зі стандартного вводу.

Параметри

Підтримка опції та функціональності в залежності від дистрибутива.

Більше інформації Name, Description ...
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

Примітки

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads