Правила та приклади команди сортування Linux
Дані в а Linux текстовий файл можна відсортувати за допомогою команди sort, якщо кожен елемент певним чином розмежований. Часто кома використовується як роздільник для інформації з роздільниками.

Основні правила сортування
Команда sort змінює порядок рядків у текстовому файлі, щоб відсортувати рядки в числовому та алфавітному порядку. Правила за замовчуванням для команди сортування:
- Текст, який починається з цифри, з’являється перед текстом, який починається з літери; спочатку відсортуйте менші числа.
- Текст, який починається з літери, яка з’являється в алфавіті раніше, ніж перша літера інших текстових записів, сортується перед текстом, який починається з літери, яка з’являється пізніше в алфавіті.
- Коли текст починається з великих і малих екземплярів однієї літери, першим сортується екземпляр нижнього регістру.
Сортувати текстовий файл
Щоб відсортувати рядки у файлі Linux з роздільниками, використовуйте сортування команда подобається це:
сортування -k2 table1.txt
Ця команда сортує файл table1.txt відповідно до символів, починаючи з другого стовпця (k2 відноситься до другого стовпця). Припускаючи, що вміст вхідного файлу такий:
1, Джастін, Тімберлейк, Титул 545, ціна 7,30 дол
2, Тейлор, Свіфт, Титул 723, ціна 7,90 дол
3, Мік, Джаггер, Титул 610, ціна 7,90 дол
4, Леді, Гага, Титул 118, Ціна $7,30
5, Джонні, готівкою, титул 482, ціна 6,50 дол
6, Елвіс, Преслі, Титул 335, ціна 7,30 дол
7, Джон, Леннон, Титул 271, ціна 7,90 дол
8, Майкл, Джексон, титул 373, ціна 5,50 дол
Оскільки другий стовпець у цьому прикладі містить імена, відсортований вихід упорядковується за першою літерою імені кожної особи в другому стовпці, як показано нижче:
6, Елвіс, Преслі, Титул 335, ціна 7,30 дол
7, Джон, Леннон, Титул 271, ціна 7,90 дол
5, Джонні, готівкою, титул 482, ціна 6,50 дол
1, Джастін, Тімберлейк, Титул 545, ціна 7,30 дол
4, Леді, Гага, Титул 118, Ціна $7,30
8, Майкл, Джексон, титул 373, ціна 5,50 дол
3, Мік, Джаггер, Титул 610, ціна 7,90 дол
2, Тейлор, Свіфт, Титул 723, ціна 7,90 дол
Якщо ви відсортуєте файл за допомогою -k3 (використовуючи вміст рядка, починаючи зі стовпця 3, стовпець Прізвище), результат:
5, Джонні, готівкою, титул 482, ціна 6,50 дол
4, Леді, Гага, Титул 118, Ціна $7,30
8, Майкл, Джексон, титул 373, ціна 5,50 дол
3, Мік, Джаггер, Титул 610, ціна 7,90 дол
7, Джон, Леннон, Титул 271, ціна 7,90 дол
6, Елвіс, Преслі, Титул 335, ціна 7,30 дол
2, Тейлор, Свіфт, Титул 723, ціна 7,90 дол
1, Джастін, Тімберлейк, Титул 545, ціна 7,30 дол
і -k5 створює список, відсортований за ціною:
4, Леді, Гага, Титул 118, Ціна $7,30
7, Джон, Леннон, Титул 271, ціна 7,90 дол
6, Елвіс, Преслі, Титул 335, ціна 7,30 дол
8, Майкл, Джексон, титул 373, ціна 5,50 дол
5, Джонні, готівкою, титул 482, ціна 6,50 дол
1, Джастін, Тімберлейк, Титул 545, ціна 7,30 дол
3, Мік, Джаггер, Титул 610, ціна 7,90 дол
2, Тейлор, Свіфт, Титул 723, ціна 7,90 дол
Зачекайте, це не спрацювало, чи не так? Замість сортування за ціною, команда сортувала список за номером заголовка. Чому? Ну, якщо йому не вказано роздільник, за яким він повинен розбивати кожен рядок на стовпці, він використовує пробіли. Оскільки в середині кожного запису заголовка є пробіл, четвертий стовпець у кожному записі стає словом «Назва», а п’ятий стовпець стає номером заголовка.
Використовуйте прапор -t, щоб указати роздільник для сортування. Це визначає, де саме команда відокремлює стовпці.
сортувати -t, -k5 table1.txt
Це дає бажаний результат:
8, Майкл, Джексон, титул 373, ціна 5,50 дол
5, Джонні, готівкою, титул 482, ціна 6,50 дол
1, Джастін, Тімберлейк, Титул 545, ціна 7,30 дол
4, Леді, Гага, Титул 118, Ціна $7,30
6, Елвіс, Преслі, Титул 335, ціна 7,30 дол
2, Тейлор, Свіфт, Титул 723, ціна 7,90 дол
3, Мік, Джаггер, Титул 610, ціна 7,90 дол
7, Джон, Леннон, Титул 271, ціна 7,90 дол
Зазвичай вам потрібно вказати роздільник. Це запобігає небажаній плутанині та неточним результатам. Особливо це стосується великих файлів, які не завжди можуть бути явно неправильними.
Зворотне сортування
The -r параметр повертає сортування. Наприклад, використовуючи наведені вище результати:
сортувати -r -t, -k5 table1.txt
дає:
7, Джон, Леннон, Титул 271, ціна 7,90 дол
3, Мік, Джаггер, Титул 610, ціна 7,90 дол
2, Тейлор, Свіфт, Титул 723, ціна 7,90 дол
6, Елвіс, Преслі, Титул 335, ціна 7,30 дол
4, Леді, Гага, Титул 118, Ціна $7,30
1, Джастін, Тімберлейк, Титул 545, ціна 7,30 дол
5, Джонні, готівкою, титул 482, ціна 6,50 дол
8, Майкл, Джексон, титул 373, ціна 5,50 дол
Зберегти відсортований файл
Сортування файлу не зберігає його. Щоб зберегти відсортований список у файлі, скористайтеся оператором переспрямування:
sort -k6 table1.txt > test_new.txt
де test_new.txt це новий файл.
Сортувати вихідний потік
Ви також можете застосувати команду sort до виводу потоку, наприклад оператор pipe:
ls -n | сортувати -t, -k5
Це сортує вихідні дані списку файлів, згенерованих файлом ls команда за розміром файлу, починаючи з найбільших файлів. The -n Оператор визначає числове сортування, а не алфавітне.