Содержание

Примеры использования утилиты sort

sort - UNIX‐ утилита, сортирует содержимое указанных файлов, с учётом установленной в среде переменных локализации.

Утилиту sort можно использовать для сортировки текста из одного или нескольких файлов или c помощью нее может быть выполнена сортировка вывода linux для какой-либо команды, например использования утилиты sort для обнаружения DoS-атак.

Параметры запуска:

Принципы, по которым команда sort linux сортирует строки

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

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

Прямая сортировка файл, по принципам описанным выше, происходит по умолчанию. Просто вызовите команду 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

Читайте также