Команда 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
Принципы сортировки строк
- Сначала строки с цифрами.
- Сначала строки, начинающиеся с букв нижнего регистра.
- Сортировка по алфавиту.
- Сначала сортировка по алфавиту, а затем по другим правилам.
Прямая и обратная сортировки
Сортировка по умолчанию (без опций):
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
позволяет системному администратору значительно оптимизировать свою работу. Знание её просто необходимо.