Команда sort
Описание
Команда sort
используется для сортировки строк в текстовых файлах или стандартном вводе. Она может:
- Сортировать данные лексикографически (по алфавиту)
- Сортировать числа
- Удалять повторяющиеся строки
- Сортировать по определённым столбцам
- Работать с пользовательскими разделителями
Это особенно полезно при обработке логов, CSV-файлов, списков и других структурированных данных.
Синтаксис
sort [опции] [файл(ы)]
или
команда | sort [опции]
Примеры использования
1. Сортировка содержимого файла
sort список.txt
Выведет отсортированный список на экран.
2. Сортировка чисел
sort -n числа.txt
Отсортирует числа по возрастанию.
3. Обратная сортировка
sort -r список.txt
Сортировка в обратном порядке (от Z до A или от большего к меньшему).
4. Удаление дубликатов
sort -u список.txt
Или:
sort -d список.txt
Уберёт повторяющиеся строки.
5. Сортировка по конкретному столбцу
sort -k 2,2 студенты.csv
Отсортирует данные по второму столбцу.
6. Сортировка с пользовательским разделителем
sort -t ',' -k 3 оценки.csv
Указывает запятую как разделитель и сортирует по третьему столбцу.
7. Сортировка и сохранение результата в файл
sort список.txt > отсортированный_список.txt
или
sort список.txt -o отсортированный_список.txt
Полезные опции
Опция | Описание |
---|---|
-n , --numeric-sort |
Сортировать как числа |
-r , --reverse |
Обратный порядок сортировки |
-u , --unique |
Оставить только уникальные строки |
-d , --dictionary-order |
Сортировать только буквы и цифры (игнорировать спецсимволы) |
-f , --ignore-case |
Игнорировать регистр |
-i , --ignore-nonprinting |
Игнорировать невидимые символы |
-k , --key=POS1[,POS2] |
Сортировать по указанному диапазону столбцов |
-t , --field-separator=SEP |
Задать пользовательский разделитель полей |
-o , --output=FILE |
Сохранить результат в указанный файл |
-c , --check |
Проверяет, отсортирован ли файл |
-m |
Объединяет уже отсортированные файлы |
Примеры с опциями
1. Сортировка по числу в 3-м столбце
sort -t ' ' -k 3,3n файл.txt
Разделитель — пробел, сортировка по 3-му столбцу как число.
2. Проверить, отсортирован ли файл
sort -c файл.txt
Если файл не отсортирован — выведет сообщение об ошибке.
3. Сортировка с игнорированием регистра
sort -f список.txt
Полезные заметки
- По умолчанию
sort
использует лексикографический порядок, который может отличаться от численного. - Для больших файлов
sort
может использовать временные файлы и много памяти. - Часто комбинируется с другими утилитами:
bash cut -d ',' -f 2 файл.csv | sort -u
Альтернативы
Инструмент | Когда использовать |
---|---|
awk |
Если нужно выполнять сложную обработку перед сортировкой |
uniq |
Для подсчёта и удаления дубликатов после сортировки |
perl / python |
Для сложной сортировки с логикой |
datamash |
Для математических операций над данными после сортировки |
Пример работы
Создадим тестовый файл люди.txt
:
echo -e "Иван 25\nОльга 30\nПетр 20" > люди.txt
Отсортируем по имени:
sort люди.txt
Отсортируем по возрасту:
sort -k 2,2n люди.txt
Результат:
Петр 20
Иван 25
Ольга 30
Полезные команды в связке
cat файл.txt | sort | uniq -c | sort -nr
Посчитает частоту встречаемости строк и отсортирует по убыванию.