Команда sort используется для сортировки или объединения строк текстовых и двоичных файлов. Сравнения основаны на одном или нескольких ключах сортировки, извлеченных из каждой строки ввода, и выполняются лексикографически. По умолчанию, если ключи не заданы, сортировка использует для сравнения целые строки. В этом посте я собираюсь изучить часто используемые команды сортировки с примерами.

Синтаксис

sort [OPTION]... [FILE]...

Сделайте man своим другом, для справки или в случае сомнения используйте команду $man sort

Примеры

Рассмотрим текстовый файл rk.txt в качестве входных данных со следующим содержимым

Rahul
rahul
Aman
Nitish
01rk

1. Сортировать в лексикографическом порядке

$sort rk.txt
output:
01rk
Aman
Nitish
Rahul
rahul

По умолчанию сортировка использует всю строку для сравнения и сортирует на основе лексикографического порядка (число ‹ алфавит и верхний регистр ‹ нижний регистр).

2. Сортировать в обратном порядке

Флаг -r используется для сортировки в обратном порядке

$sort -r rk.txt
output:
rahul
Rahul
Nitish
Aman
01rk

3. Проверьте, отсортирован ли уже файл

Используйте флаг -c, чтобы проверить, отсортирован ли уже файл.

$sort -c rk.txt
output:
sort: rk.txt:3: disorder: Aman

Поскольку файл не отсортирован, он печатает номер строки с сообщением о беспорядке. Если файл отсортирован, он ничего не печатает.

4. Запись вывода в файл

Примечание: входной файл не изменяется с помощью команды сортировки, содержимое входного файла остается в том же порядке, что и раньше
Чтобы сохранить вывод команды сортировки в файл, используйте либо > оператор перенаправления или флаг `-o'

$sort rk.txt > output.txt
$sort -o output.txt rk.txt

Оба вышеуказанных вывода команды sort будут сохранены в файле output.txt.

6. Сортировка числовых значений

Флаг -n используется для сортировки числовых значений. Позволяет переопределить содержимое rk.txt следующими значениями

12
1
4
5.23
23.2
$sort -n rk.txt
output:
1
4
5.23
12
23.2
$sort -nr rk.txt
output:
23.2
12
5.23
4
1

7. Объединить отсортированные файлы

Рассмотрим файлы a.txt и b.txt со следующим содержимым

a.txt
Aman
Rahul
b.txt
Amit
Nishant
$sort -m a.txt b.txt
output:
Aman
Amit
Nishant
Rahul

Примечание. Если входные файлы не отсортированы, порядок строк в выводе не определяется.

8. Сортировка и удаление дубликатов

Рассмотрим файл .txt со следующим содержимым

Rahul
Aman
Rahul
Rohit

Команда -u используется для сортировки и удаления дубликатов.

$sort -u a.txt
output:
Aman
Rahul
Rohit

9. Сортировка по определенному столбцу/полю каждой строки

Флаг -k с номером столбца/поля используется для сортировки на основе этого столбца.
Рассмотрим файл .txt со следующим содержимым.

Rahul 2
Rohit 21
Aman 10
Amit 15

Следующая команда сортирует содержимое файла .txt на основе второго столбца.

$sort -n -k 2 a.txt
output:
Rahul 2
Aman 10
Amit 15
Rohit 21

Вышеуказанная команда также может быть записана как $sort -nk2 a.txt. примечание -n флаг используется для числовой сортировки. По умолчанию в качестве разделителя полей используются пробелы, для других типов разделителей используйте флаг -t.

Рассмотрим b.txt со следующим содержимым.

Rahul,2
Rohit,21
Aman,10
Amit,15

Следующая команда отсортирует содержимое b.txt во втором столбце.

$sort -t ',' -n -k 2 b.txt
output:
Rahul,2
Aman,10
Amit,15
Rohit,21

10. Игнорировать регистр при сортировке

Используйте флаг -f, чтобы игнорировать регистр, рассмотрите .txt со следующим содержимым

rahul
Rohit
Amit
Aman
$sort -f a.txt
output:
Aman
Amit
rahul
Rohit