Команда sort
в Linux — мощный инструмент для сортировки строк в текстовых файлах. Она позволяет упорядочивать данные в алфавитном, числовом, обратном порядке, а также по датам и другим критериям.
Основы работы с sort
Сортировка файла по алфавиту
sort file.txt
Выводит содержимое file.txt
в алфавитном порядке.
Сортировка с сохранением в файл
sort file.txt > sorted_file.txt
Сохраняет отсортированные данные в новый файл.
Сортировка в обратном порядке (-r
)
sort -r file.txt
Выводит строки в обратном порядке (от Z до A).
Расширенные возможности сортировки
Числовая сортировка (-n
)
Если файл содержит числа, обычная сортировка может дать некорректный результат:
10
2
1
Сортировка без -n
:
sort file.txt
# Вывод: 1, 10, 2 (неправильно)
Сортировка с -n
:
sort -n file.txt
# Вывод: 1, 2, 10 (правильно)
Сортировка по определенному столбцу (-k
)
Если файл содержит табличные данные (например, CSV или лог-файлы), можно сортировать по конкретному столбцу:
Alice 25
Bob 30
Eve 20
Сортировка по возрасту (2-й столбец):
sort -k 2 -n data.txt
# Вывод: Eve 20, Alice 25, Bob 30
Удаление дубликатов (-u
)
sort -u file.txt
Удаляет повторяющиеся строки.
Сортировка по человекочитаемым числам (-h
)
Полезно для сортировки размеров файлов (например, 1K
, 2M
, 1G
):
ls -lh | sort -k 5 -h
Сортировка по месяцу (-M
)
Если в файле есть названия месяцев (Jan
, Feb
, …), можно отсортировать их в хронологическом порядке:
sort -M months.txt
Полезные комбинации с другими командами
Сортировка и подсчёт уникальных строк (sort | uniq -c
)
sort file.txt | uniq -c
Выводит количество вхождений каждой строки:
3 Apple
2 Banana
1 Orange
Сортировка самых больших файлов (du + sort
)
du -ah /path | sort -rh | head -n 10
Показывает 10 самых больших файлов/папок.
Сортировка процессов по использованию памяти (ps + sort
)
ps aux --sort=-%mem | head
4. Дополнительные опции sort
Опция | Описание | Пример |
---|---|---|
-f | Игнорировать регистр | sort -f file.txt |
-o | Сохранить результат в исходный файл | sort file.txt -o file.txt |
-R | Случайная сортировка (shuffle) | sort -R file.txt |
-t | Указать разделитель столбцов | sort -t ',' -k 2 data.csv |
-V | Естественная сортировка версий | sort -V versions.txt |
5. Примеры реального использования
Сортировка CSV-файла по столбцу
sort -t ',' -k 3 -n data.csv
Сортирует по третьему столбцу (числа).
Сортировка IP-адресов
sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n iplist.txt
Сортировка дат в логах
grep "ERROR" /var/log/syslog | sort -k 3M -k 4n
Добавить комментарий