sort — це програма Unix-подібних операційних систем, яка повертає текст у відсортованому порядку. Вхідні дані вона отримує через stdin або з файлів які були задані через аргументи. Команда підтримує низку параметрів командного рядка, які можуть відрізнятися залежно від реалізації, котрі керують в якому порядку сортувати дані.
Історія
Команда sort
, яка реалізовувала тривіальне сортування, була вперше реалізована в Multics. Пізніше sort
з'явилась у версії UNIX System v1
. Її написав Кен Томпсон в AT&T Bell Laboratories. До UNIX System v4
команда sort
потребувала опцію назви вхідного файлу, оскільки вона використовувалася для сортування файлів. Потім Томпсон модифікував її для використання конвеєрів. А в UNIX version 5 Томпсон винайшов значення «-
» як ім'я файлу, що означало що замість файлу дані для сортування поступатимуть зі стандартного введення. Зараз такий підхід часто використовується в інших командах, таких як tar.
Версія sort
, яка включена в GNU coreutils, була написано Майком Хертелем і Полом Еггертом. Ця реалізація використовує алгоритм сортування злиттям.
Подібні команди доступні в багатьох інших операційних системах.
Синтаксис
sort [ОПЦІї]... [ФАЙЛ]...
Якщо параметр ФАЙЛ
відсутній, або коли ФАЙЛ
дорівнює -
, команда читає дані зі стандартного вводу.
Параметри
Підтримка опції та функціональності в залежності від дистрибутива.
Ця Sort_(computing) містить фрагменти англійською мовою. |
Name | Description | Unix | Plan 9 | Inferno | FreeBSD | Linux | MSX-DOS | IBM i |
---|---|---|---|---|---|---|---|---|
-b, --ignore-leading-blanks | Ігнорувати пусті символі на початку | Так | Так | Ні | Так | Так | Ні | Так |
-c | не сортувати, а лише перевірити що текст відсортований | Ні | Так | Ні | Так | Так | Ні | Так |
-C | як і -c але не показувати перший невідсортований рядок | Ні | Ні | Ні | Так | Так | Ні | Ні |
-d, --dictionary-order | Considers only blanks and alphanumeric characters. | Так | Так | Ні | Так | Так | Ні | Так |
-f, --ignore-case | Ігнорувати регістр розкладки | Так | Так | Ні | Так | Так | Ні | Так |
-g, --general-numeric-sort, --sort=general-numeric | Compares according to general numerical value. | Так | Так | Ні | Так | Так | Ні | Ні |
-h, --human-numeric-sort, --sort=human-numeric | Порівнює числові значення з префіксами (тобто 2K 1G) згідно числового значення. | Так | Ні | Ні | Так | Так | Ні | Ні |
-i, --ignore-nonprinting | Ігнорує невидимі та спеціальні символи при порівняння. | Так | Так | Ні | Так | Так | Ні | Так |
-k, --key=POS1[,POS2] | Start a key at POS1 (origin 1), end it at POS2 (default end of line) | Ні | Ні | Ні | Так | Так | Ні | Ні |
-m | об'єднати завчасно відсортовані файли. | Ні | Так | Ні | Так | Так | Ні | Так |
-M, --month-sort, --sort=month | Порівнювати назви місяців згідно таких правил: (невідомо) < 'JAN' < … < 'DEC'. | Так | Так | Ні | Так | Так | Ні | Ні |
-n, --numeric-sort, --sort=numeric | Порівнювати рядки з числами згідно їх ординального значення. | Так | Так | Так | Так | Так | Ні | Так |
-o OUTPUT | Повертає результат в файл OUTPUT замість стандартного виводу. | Ні | Так | Ні | Так | Так | Ні | Так |
-r, --reverse, /R (MSX-DOS) | Повертає результат в зворотному порядку | Так | Так | Так | Так | Так | Так | Так |
-R, --random-sort, --sort=random | Перемішує результат в випадковому порядку. Дивиться також . | Так | Ні | Ні | Так | Так | Ні | Ні |
-s | Стабілізує сортування, вимикаючи last-resort comparison. | Ні | Ні | Ні | Так | Так | Ні | Ні |
-S size, --buffer-size=size | Вказує скільки оперативної пам'яті виділяти для буферизації. | Ні | Ні | Ні | Так | Ні | Ні | Ні |
-tx | Вказує використовувати символ табуляції сепаратором полів. | Ні | Так | Ні | Ні | Так | Ні | Так |
-t char, --field-separator=char | Вказує використовувати символ char символом сепаратора полів. | Ні | Ні | Ні | Так | Так | Ні | Ні |
-T dir, --temporary-directory=dir | Вказує який каталог використовувати для тимчасових даних . | Ні | Так | Ні | Так | Так | Ні | Ні |
-u, --unique | Повертає лише унікальні рядки, в випадку якщо дублюються ключі. | Ні | Так | Ні | Так | Так | Ні | Так |
-V, --version-sort | Природне сортування версій згідно значень чисел в розділених крапками. | Ні | Ні | Ні | Так | Так | Ні | Ні |
-w | Like -i, but ignore only tabs and spaces. | Ні | Так | Ні | Ні | Ні | Ні | Ні |
-z, --zero-terminated | Вважає що рядок розділяється символом NUL а не Newline | Ні | Ні | Ні | Так | Так | Ні | Ні |
--help | Повертає довідку та виходить | Ні | Ні | Ні | Так | Так | Ні | Ні |
--version | Повертає номер версії та виходить | Ні | Ні | Ні | Так | Так | Ні | Ні |
/R | Повертає результат в зворотному порядку | Ні | Ні | Ні | Ні | Ні | Так | Ні |
/S | Specify the number of digits to determine how many digits of each line should be judged. | Ні | Ні | Ні | Ні | Ні | Так | Ні |
/A | Sort by ASCII code. | Ні | Ні | Ні | Ні | Ні | Так | Ні |
/H | Include hidden files when using wild cards. | Ні | Ні | Ні | Ні | Ні | Так | Ні |
Приклади
Сортування файлу в алфавітному порядку
Нехай у нас є телефонна книга:
$ 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.
Примітки
- Multics Commands. www.multicians.org.
- sort(1): sort lines of text files - Linux man page. linux.die.net.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
sort ce programa Unix podibnih operacijnih sistem yaka povertaye tekst u vidsortovanomu poryadku Vhidni dani vona otrimuye cherez stdin abo z fajliv yaki buli zadani cherez argumenti Komanda pidtrimuye nizku parametriv komandnogo ryadka yaki mozhut vidriznyatisya zalezhno vid realizaciyi kotri keruyut v yakomu poryadku sortuvati dani IstoriyaKomanda sort yaka realizovuvala trivialne sortuvannya bula vpershe realizovana v Multics Piznishe sort z yavilas u versiyi UNIX System v1 Yiyi napisav Ken Tompson v AT amp T Bell Laboratories Do UNIX System v4 komanda sort potrebuvala opciyu nazvi vhidnogo fajlu oskilki vona vikoristovuvalasya dlya sortuvannya fajliv Potim Tompson modifikuvav yiyi dlya vikoristannya konveyeriv A v UNIX version 5 Tompson vinajshov znachennya yak im ya fajlu sho oznachalo sho zamist fajlu dani dlya sortuvannya postupatimut zi standartnogo vvedennya Zaraz takij pidhid chasto vikoristovuyetsya v inshih komandah takih yak tar Versiya sort yaka vklyuchena v GNU coreutils bula napisano Majkom Hertelem i Polom Eggertom Cya realizaciya vikoristovuye algoritm sortuvannya zlittyam Podibni komandi dostupni v bagatoh inshih operacijnih sistemah Sintaksissort OPCIyi FAJL Yaksho parametr FAJL vidsutnij abo koli FAJL dorivnyuye komanda chitaye dani zi standartnogo vvodu Parametri Pidtrimka opciyi ta funkcionalnosti v zalezhnosti vid distributiva Cya Sort computing mistit neperekladeni fragmenti anglijskoyu movoyu Vi mozhete dopomogti proyektu pereklavshi yih ukrayinskoyu Name Description Unix Plan 9 Inferno FreeBSD Linux MSX DOS IBM i b ignore leading blanks Ignoruvati pusti simvoli na pochatku Tak Tak Ni Tak Tak Ni Tak c ne sortuvati a lishe pereviriti sho tekst vidsortovanij Ni Tak Ni Tak Tak Ni Tak C yak i c ale ne pokazuvati pershij nevidsortovanij ryadok Ni Ni Ni Tak Tak Ni Ni d dictionary order Considers only blanks and alphanumeric characters Tak Tak Ni Tak Tak Ni Tak f ignore case Ignoruvati registr rozkladki Tak Tak Ni Tak Tak Ni Tak g general numeric sort sort general numeric Compares according to general numerical value Tak Tak Ni Tak Tak Ni Ni h human numeric sort sort human numeric Porivnyuye chislovi znachennya z prefiksami tobto 2K 1G zgidno chislovogo znachennya Tak Ni Ni Tak Tak Ni Ni i ignore nonprinting Ignoruye nevidimi ta specialni simvoli pri porivnyannya Tak Tak Ni Tak Tak Ni Tak k key POS1 POS2 Start a key at POS1 origin 1 end it at POS2 default end of line Ni Ni Ni Tak Tak Ni Ni m ob yednati zavchasno vidsortovani fajli Ni Tak Ni Tak Tak Ni Tak M month sort sort month Porivnyuvati nazvi misyaciv zgidno takih pravil nevidomo lt JAN lt lt DEC Tak Tak Ni Tak Tak Ni Ni n numeric sort sort numeric Porivnyuvati ryadki z chislami zgidno yih ordinalnogo znachennya Tak Tak Tak Tak Tak Ni Tak o OUTPUT Povertaye rezultat v fajl OUTPUT zamist standartnogo vivodu Ni Tak Ni Tak Tak Ni Tak r reverse R MSX DOS Povertaye rezultat v zvorotnomu poryadku Tak Tak Tak Tak Tak Tak Tak R random sort sort random Peremishuye rezultat v vipadkovomu poryadku Divitsya takozh Tak Ni Ni Tak Tak Ni Ni s Stabilizuye sortuvannya vimikayuchi last resort comparison Ni Ni Ni Tak Tak Ni Ni S size buffer size size Vkazuye skilki operativnoyi pam yati vidilyati dlya buferizaciyi Ni Ni Ni Tak Ni Ni Ni tx Vkazuye vikoristovuvati simvol tabulyaciyi separatorom poliv Ni Tak Ni Ni Tak Ni Tak t char field separator char Vkazuye vikoristovuvati simvol char simvolom separatora poliv Ni Ni Ni Tak Tak Ni Ni T dir temporary directory dir Vkazuye yakij katalog vikoristovuvati dlya timchasovih danih Ni Tak Ni Tak Tak Ni Ni u unique Povertaye lishe unikalni ryadki v vipadku yaksho dublyuyutsya klyuchi Ni Tak Ni Tak Tak Ni Tak V version sort Prirodne sortuvannya versij zgidno znachen chisel v rozdilenih krapkami Ni Ni Ni Tak Tak Ni Ni w Like i but ignore only tabs and spaces Ni Tak Ni Ni Ni Ni Ni z zero terminated Vvazhaye sho ryadok rozdilyayetsya simvolom NUL a ne Newline Ni Ni Ni Tak Tak Ni Ni help Povertaye dovidku ta vihodit Ni Ni Ni Tak Tak Ni Ni version Povertaye nomer versiyi ta vihodit Ni Ni Ni Tak Tak Ni Ni R Povertaye rezultat v zvorotnomu poryadku Ni Ni Ni Ni Ni Tak Ni S Specify the number of digits to determine how many digits of each line should be judged Ni Ni Ni Ni Ni Tak Ni A Sort by ASCII code Ni Ni Ni Ni Ni Tak Ni H Include hidden files when using wild cards Ni Ni Ni Ni Ni Tak NiPrikladiSortuvannya fajlu v alfavitnomu poryadku Nehaj u nas ye telefonna kniga cat phonebook TKAChENKO NATALIYa 123 1324 BONDARENKO OLENA 123 1234 KOVALENKO TETYaNA 123 3241 MELNIK VOLODIMIR 123 2132 ShEVChENKO OLEKSANDR 123 3214 KRAVChENKO SERGIJ 123 4321 Vidsortuyemo yiyi sort phonebook BONDARENKO OLENA 123 1234 KOVALENKO TETYaNA 123 3241 KRAVChENKO SERGIJ 123 4321 MELNIK VOLODIMIR 123 2132 TKAChENKO NATALIYa 123 1324 ShEVChENKO OLEKSANDR 123 3214 Ce alfavitne sortuvannya za zamovchuvannyam sortuye zgidno tablici koduvannya UTF 8 abo ASCII dlya pevnih znachen V alfavitnomu sortuvanni znachennya ryadka 10 bilshe nizh 1 ale menshe nizh 2 tomu sho 2 porivnyuyetsya zi znachennyam pershogo simvolu 1 z ryadka 10 Nehaj u nas u fajli numbers ryadki z chislami 1 2 3 10 11 12 100 101 111 sort numbers 1 10 100 101 11 111 12 2 3 Sortuvannya za znachennyam chisla Opciya n zmushuye programu sortuvati vidpovidno do chislovogo znachennya sort n numbers 1 2 3 10 11 12 100 101 111 Stovpci kolonki abo polya Opciya k vikoristovuyetsya dlya sortuvannya za pevnim stovpcem Napriklad k 2 vidsortuye telefonnu knigu za im yam a k 3 za nomerom telefona rozglyadayuchi probil abo sumizhni probili yak simvol sho rozdilyaye stovpci separator cat phonebook sort k 2 MELNIK VOLODIMIR 123 2132 TKAChENKO NATALIYa 123 1324 ShEVChENKO OLEKSANDR 123 3214 BONDARENKO OLENA 123 1234 KRAVChENKO SERGIJ 123 4321 KOVALENKO TETYaNA 123 3241 cat phonebook sort k 3 BONDARENKO OLENA 123 1234 TKAChENKO NATALIYa 123 1324 MELNIK VOLODIMIR 123 2132 ShEVChENKO OLEKSANDR 123 3214 KOVALENKO TETYaNA 123 3241 KRAVChENKO SERGIJ 123 4321 Sortuvannya u vipadkovomu poryadku Realizaciya GNU maye opciyu R random sort kozhen zapusk takogo sortuvannya vidaye ryadki v vipadkovomu poryadku mozhna skazati sho vipadkovo peremishuye ryadki Ale ce ne ye povnistyu chesne vipadkove peremishuvannya oskilki vono sortuye na osnovi heshuvannya ryadka ta vipadkovih danih i vivodit identichni ryadki razom Spravzhnye vipadkove sortuvannya zabezpechuye utilita shuf Sortuvati za versiyeyu Realizaciya GNU maye opciyu V version sort ce sortuvannya nomeriv versij v z urahuvannyam majority krapki yak simvolu separatora ta chislovogo poryadku znachen propuskayuchi pochatkovi nuli a takozh liter sho jdut za chislami Viyavlyayetsya sho ce pracyuye i dlya adres IPv4 PrimitkiMultics Commands www multicians org sort 1 sort lines of text files Linux man page linux die net