Команда sort в Linux

Опубликовано admin - сб, 06/11/2022 - 12:44

Команда sort используется в Linux для сортировки содержимого текстовых файлов. Это позволяет выводить текстовые строки в определённом порядке.

Команда sort Linux

Утилита имеет разные функции. В статье изложены основные примеры её применения.

Содержание

Синтаксис

sort [ПАРАМЕТР]… [ФАЙЛ]…

Печатает сортированное слияние всех ФАЙЛ(ов) на стандартный вывод.

Если ФАЙЛ не задан или задан как -, читает стандартный ввод.

Опции

-b, --ignore-leading-blanks
Игнорировать начальные пропуски
-d, --dictionary-order
Рассматривать только пропуски, буквы и цифры
-f, --ignore-case
Игнорировать регистр букв
-g, --general-numeric-sort
Сравнивать в соответствии с общим числовым значением
-i, --ignore-nonprinting
Рассматривать только печатные символы
-h, --human-numeric-sort
Сравнивать числа в удобном для человека виде (например, 2K 1G)
-n, --numeric-sort
Сравнивать по числовым значениям строк
-r, --reverse
Изменить результаты сравнения на противоположные
-c, --check, --check=diagnose-first
Проверять, сортированы ли входные файлы
-k, --key=ОПР_КЛЮЧА
Сортировать по ключу; в ОПР_КЛЮЧА задано расположение и тип
-m, --merge
Объединить уже отсортированные файлы
-o, --output=ФАЙЛ
Выводить в ФАЙЛ, а не на стандартный вывод
-u, --unique
С -c, проверять порядок строго; без -c, выводить только первое среди нескольких равных

ОПР_КЛЮЧА задается как F[.C][OPTS][,F[.C][OPTS]] для начала и конца положения, где F — номер поля, а C — позиция в поле, оба отсчитываются от 1, а конечная позиция по умолчанию равна концу строки.

Если не задан параметр -t или -b, то символы в поле отсчитываются от начала предшествующего пробельного символа. OPTS составляется из одной или нескольких букв, задающих порядок сортировки [bdfgiMhnRrV]; он переопределяет соответствующие глобальные параметры сортировки для данного ключевого поля.

Использование команды sort

Принципы сортировки строк

  1. Сначала строки с цифрами.
  2. Сначала строки, начинающиеся с букв нижнего регистра.
  3. Сортировка по алфавиту.
  4. Сначала сортировка по алфавиту, а затем по другим правилам.

Прямая и обратная сортировки

Сортировка по умолчанию (без опций):

oleg@mobile:~:$ sort example.txt 

Александр
Алексей
Валерий
Валерий
Василий
Дарья
Дмитрий
Иван
Иван
Ирина
Мария
Мария
Никита
Николай
Тамара

Все имена были отсортированы по алфавиту, но некоторые строки дублированы. Имена Валерий, Иван, Мария повторяются.

Обратная сортировка:

oleg@mobile:~:$ sort -r example.txt 
Тамара
Николай
Никита
Мария
Мария
Ирина
Иван
Иван
Дмитрий
Дарья
Василий
Валерий
Валерий
Алексей
Александр

Для выполнения обратной сортировки была использована опция -r.

Удаление дубликатов

oleg@mobile:~:$ sort -u example.txt 

Александр
Алексей
Валерий
Василий
Дарья
Дмитрий
Иван
Ирина
Мария
Никита
Николай
Тамара

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

Сортировка файлов по номеру колонки и полю

oleg@mobile:~:$ ls -l ~/webprojects/linuxcookbook.ru/articles/ | sort -nk5
итого 512
-rw-r--r-- 1 oleg users   619 мая 25 19:33 arch-linux
-rw-r--r-- 1 oleg users   627 июн  9 16:21 linux-echo
-rw-r--r-- 1 oleg users  1176 июн  9 16:20 linux-alias
-rw-r--r-- 1 oleg users  1458 янв 15 17:48 raspoznavanie-skanera-linux
-r--r--r-- 1 oleg users  1579 янв 15 18:09 couldnt-load-xpcom
-r--r--r-- 1 oleg users  1980 янв 15 18:26 ustanovka-daty-vremeni-linux
-r--r--r-- 1 oleg users  2679 янв 15 18:03 avtomontirovanie-fleshki-linux
-r--r--r-- 1 oleg users  3241 янв 14 12:46 kak-obnovit-libreoffice-linux
-r--r--r-- 1 oleg users  3445 янв 15 17:41 fayl-adstxt-nedostupen
-rw-r--r-- 1 oleg users  3464 окт  6  2021 opisanie-openbox-linux
drwxr-xr-x 2 oleg users  4096 июн 10 09:49 RCS/
-r--r--r-- 1 oleg users  4567 мая  9 12:43 veb-brauzer-vpn-linux
...

В данном примере был использован pipeline (трубопровод). Файлы были отсортированы по размеру и по числовым значениям (опция ). Колонка 5 (опция -k5).  

В предыдущей статье было также показано использование sort совместно с командой du.

Выводы

В Linux использование команды sort позволяет системному администратору значительно оптимизировать свою работу. Знание её просто необходимо.

Поделиться с друзьями