Елементите, които трябва да се сортират, трябва да бъдат определени по някакъв начин
Данните в текстов файл на Linux могат да бъдат сортирани с командата за сортиране, стига всеки елемент да бъде определен по някакъв начин. Често се използва запетая за разделителна информация.
Основни правила за сортиране
Командата за подреждане пренарежда линиите в текстов файл, за да ги подреди по азбучен и цифров начин. Правилата по подразбиране за командата за сортиране са:
- Текстът, който започва с число, се появява преди текста, започващ с буква; по-нисък брой сортиране първо.
- Текст, който започва с буквата, която се появява в азбуката по-рано, преди първото писмо от други текстови записи да бъде сортирано преди текста, започващ с буква, която се появява по-късно в азбуката.
- Когато текстът започва с главни и малки букви на една и съща буква, малкият пример се сортира първо.
Сортиране на текстов файл
За да сортирате линиите в ограничен Linux файл, използвайте командата за сортиране по следния начин:
$ sort -k2 test.txtкойто сортира файла "test.txt" според буквите, започващи от втората колона (k2 се отнася до втората колона). Ако приемем, че съдържанието на входния файл е:
1, Джъстин Тимбърлейк, Дял 545, Цена $ 7.30 2, Тейлър Суифт, Заглавие 723, Цена $ 7.90 3, Мик Джагър, Заглавие 610, Цена $ 7.90 4, Лейди Гага, Заглавие 118, Цена $ 7.30 5, Johnny Cash, Дял 482, Цена $ 6.50 6, Елвис Пресли, Заглавие 335, Цена $ 7.30 7, Джон Ленън, Дял 271, Цена $ 7.90 8, Майкъл Джексън, Заглавие 373, Цена $ 5.50Тъй като втората колона в този пример съдържа име и фамилия, сортираните резултати се подреждат с първата буква от първото име на всяко лице във втората колона - Елвис, Джон, Джони, Джъстин, Лейди, Майкъл, Мик и Тейлър , както е показано по-долу:
6, Елвис Пресли, Заглавие 335, Цена $ 6.30 7, Джон Ленън, Дял 271, Цена $ 7.90 5, Джони Кеш, Дял 482, Цена $ 6.50 1, Джъстин Тимбърлейк, Заглавие 545, Цена $ 6.30 4, Lady Gaga, Заглавие 118, Цена $ 6.30 8, Майкъл Джексън, Заглавие 373, Цена $ 5.50 3, Мик Джагър, Заглавие 610, Цена $ 7.90 2, Тейлър Суифт, Заглавие 723, Цена $ 7.90Ако сортирате файла с -k3 (използвайки съдържанието на линията, започвайки от колона 3 - колоната Номер на заглавието), изходът е:
4, Lady Gaga, Заглавие 118, Цена $ 6.30 7, Джон Ленън, Дял 271, Цена $ 7.90 6, Елвис Пресли, Заглавие 335, Цена $ 6.30 8, Майкъл Джексън, Заглавие 373, Цена $ 5.50 5, Johnny Cash, Дял 482, Цена $ 6.50 1, Джъстин Тимбърлейк, Дял 545, Цена $ 6.30 3, Мик Джагър, Заглавие 610, Цена $ 7.90 2, Тейлър Суифт, Заглавие 723, Цена $ 7.90и
$ sort -k4 test.txtпроизвежда списък сортирани по цена:
8, Майкъл Джексън, Дял 373, Цена $ 5.50 1, Джъстин Тимбърлейк, Дял 545, Цена $ 6.30 4, Лейди Гага, Заглавие 118, Цена $ 6.30 6, Елвис Пресли, Заглавие 335, Цена $ 6.30 5, Johnny Cash, Дял 482, Цена $ 6.50 2, Тейлър Суифт, Дял 723, Цена $ 7.90 3, Мик Джагър, Заглавие 610, Цена $ 7.90 7, Джон Ленън, Дял 271, Цена $ 7.90Обръщане на сортиране
Опцията -r обръща сортирането. Например, като използвате горните резултати:
$ sort -k4 -r test.txtдобиви:
7, Джон Ленън, Дял 271, Цена $ 7.90 3, Мик Джагър, Заглавие 610, Цена $ 7.90 2, Тейлър Суифт, Заглавие 723, Цена $ 7.90 5, Johnny Cash, Дял 482, Цена $ 6.50 6, Elvis Presley, Title 335, Цена $ 6.30 4, Lady Gaga, Заглавие 118, Цена $ 6.30 1, Джъстин Тимбърлейк, Заглавие 545, Цена $ 6.30 8, Майкъл Джексън, Заглавие 373, Цена $ 5.50Запазване на сериен файл
Сортирането на файл не го запазва. За да запазите сортирания списък във файл, използвате оператора за пренасочване:
sort -k4 -r test.txt> test_new.txtкъдето "test_new.txt" е новият файл.
Сортиране на поток изход
Можете също така да приложите командата за сортиране към изхода на поток, като оператора на тръби:
$ ls -al | сортирай -r -n -k5Това сортира изхода на списъка с файлове, генериран от командата ls по размер на файла, като се започне с най-големите файлове. Операторът -n определя числено сортиране, а не азбучен.