sort - UNIX‐ утилита, сортирует содержимое указанных файлов, с учётом установленной в среде переменных локализации.
Утилиту sort можно использовать для сортировки текста из одного или нескольких файлов или c помощью нее может быть выполнена сортировка вывода linux для какой-либо команды, например использования утилиты sort для обнаружения DoS-атак.
Параметры запуска:
Прямая сортировка файл, по принципам описанным выше, происходит по умолчанию. Просто вызовите команду 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 Linux позволяет не только сортировать строки, но и удалять дубликаты, для этого есть опция -u.
$ sort -u yourfile.txt
Или такой вариант
$ cat old.txt | sort | uniq > new.txt