Команда 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