Примеры использования утилиты sort
sort - UNIX‐ утилита, сортирует содержимое указанных файлов, с учётом установленной в среде переменных локализации.
Утилиту sort можно использовать для сортировки текста из одного или нескольких файлов или c помощью нее может быть выполнена сортировка вывода linux для какой-либо команды, например использования утилиты sort для обнаружения DoS-атак.
Параметры запуска:
- -b, –ignore-leading-blanks игнорировать начальные пропуски
- -d, –dictionary-order рассматривать только пропуски, буквы и цифры
- -f, –ignore-case игнорировать регистр букв
- -i, –ignore-nonprinting рассматривать только печатные знаки
- -n, –numeric-sort сравнивать численные значения строк
- -h, –human-numeric-sort сравнивать численные значения с учетом сокращения степени (2K, 1G)
- -r, –reverse обратить результаты сравнения; обратный порядок
- -u, –unique с -c, проверять порядок строго; без -c, выводить только первое среди нескольких равных
- -c, –check проверять, сортированы ли входные файлы; не сортировать
- -k, –key=Поз1[,Поз2] начинать ключ в Поз1 и завершать на Поз2 (отсчет от 1)
- -o, –output=ФАЙЛ выводить в ФАЙЛ, а не на стандартный вывод
- -t, –field-separator=РАЗДЕЛИТЕЛЬ использовать при поиске ключевых полей РАЗДЕЛИТЕЛЬ, а не переход от непробельных знаков к пробельным
Принципы, по которым команда sort linux сортирует строки
- Строки с цифрами размещаются выше других строк
- Строки, начинающиеся с букв нижнего регистра размещаются выше
- Сортировка выполняется в соответствии алфавиту
- Строки сначала сортируются по алфавиту, а уже вторично по другим правилам.
Пример сортировки и обратной сортировки
Прямая сортировка файл, по принципам описанным выше, происходит по умолчанию. Просто вызовите команду sort и укажите нужный файл. Например, мы хотим отсортировать по алфавиту файл служб Linux (/etc/services), который хранит информацию о многочисленных службах, которые клиентские приложения могут использовать на компьютере. Внутри файла services находятся имя службы, номер порта и протокол, который он использует, и любые применимые псевдонимы.
$ sort /etc/services acr-nema 104/tcp dicom # Digital Imag. & Comm. 300 afbackup 2988/tcp # Afbackup system afbackup 2988/udp afmbackup 2989/tcp # Afmbackup system afmbackup 2989/udp afpovertcp 548/tcp # AFP over TCP afs3-bos 7007/tcp # basic overseer process afs3-bos 7007/udp afs3-callback 7001/tcp # callbacks to cache managers ...
Для обратной сортировки используйте ключ r, команда будет выглядеть так:
$ sort -r /etc/services
Сортировка по колонке и по нескольким полям
В этом примере мне нужно вывести все лог файлы и отсортировать их по колонке с названием месяца. Колонка указывается опцией -k, номер колонки для вывода команды ls седьмой. Итого получим такую команду для запуска:
$
ls -l /var/log/ | sort -k7 ... drwxr-xr-x 2 root root 4096 Sep 5 2019 openvpn -rw-r----- 1 root adm 14721 Mar 6 18:47 vsftpd.log.2 -rw------- 1 root root 10723 Mar 6 23:53 dovecot.log.2.gz -rw-r----- 1 root adm 281146 Mar 6 23:59 fail2ban.log.2.gz -rw-r----- 1 syslog adm 1190971 Mar 7 00:00 auth.log.2.gz
Для сортировки по числовому значению используется опция -n:
$ ls -l /var/log/ | sort -nk6
Мы можем сортировать данные по нескольким полям, например, отсортируем вывод ls по второму первично и вторично девятому полях:
$ ls -l /var/log/ | sort -t "," -nk2,5 -k9
Использование sort для удаления дубликатов
Команда sort Linux позволяет не только сортировать строки, но и удалять дубликаты, для этого есть опция -u.
$ sort -u yourfile.txt
Или такой вариант
$ cat old.txt | sort | uniq > new.txt
Читайте также

Friendhosting - Разумные цены на хостинг
VDS/VPS сервер от 3.49€ в месяц. Много ресурсов. Высокая надежность. Гибкое управление. Удобная оплата. Настройка под вас!
friendhosting.net
Антидетект браузер Dolphin{anty} бесплатно до 10 профилей
Dolphin разработан для работы с такими сложными ресурсов, как Google, Facebook и Coinlist.
Английский для IT‑специалистов по Skype
Персональные занятия по разумным ценам. 80% разговорной практики. Персональный график!
skyeng.ru