sort
Команда sort в Linux: что это и зачем нужна
Команда sort в Linux используется для сортировки текстовых данных в файлах или стандартном потоке ввода. Это один из базовых инструментов обработки текстов в Unix-подобных системах, который помогает быстро упорядочить строки по различным критериям — алфавиту, числам, дате или пользовательским полям.
Команда работает построчно: каждая строка рассматривается как отдельная запись, и результат сортировки выводится на стандартный вывод, если не указано иное.
Пример простого использования:
sort file.txt
Эта команда отсортирует строки файла file.txt в алфавитном порядке и выведет результат в консоль.
Основные параметры команды sort в Linux
Функциональность команды sort в Linux определяется множеством параметров. Рассмотрим наиболее часто применяемые ключи, которые помогают адаптировать сортировку под конкретные задачи.
1. Сортировка по числам (-n)
По умолчанию sort сортирует строки как текст. Чтобы сортировать по числовым значениям, используют флаг -n:
sort -n numbers.txt
Файл будет отсортирован по числам, а не по текстовому представлению (например, 2 будет идти перед 10).
sort -n корректно их интерпретирует.2. Обратная сортировка (-r)
Чтобы изменить порядок сортировки на обратный, добавьте флаг -r:
sort -r file.txt
Теперь строки будут выведены в обратном порядке — от Z к A или от большего числа к меньшему.
Эта комбинация (sort -nr) часто используется для сортировки чисел по убыванию.
3. Сортировка по определённому столбцу (-k)
Когда данные разделены пробелами, табуляцией или другими символами, можно указать поле (колонку), по которому производится сортировка.
sort -k 2 data.txt
Команда отсортирует строки по второму столбцу.
Если данные разделены, например, запятыми, можно указать разделитель:
sort -t, -k 3 file.csv
Здесь -t, задаёт запятую как разделитель, а -k 3 — третий столбец в качестве ключа сортировки.
4. Игнорирование регистра (-f)
Чтобы сортировка не зависела от регистра букв (т.е. “Linux” и “linux” считались одинаковыми), применяют флаг -f:
sort -f words.txt
5. Удаление дубликатов (-u)
Флаг -u исключает повторяющиеся строки, оставляя только уникальные значения:
sort -u list.txt
Это особенно полезно при анализе логов или списков пользователей.
sort -u и uniq часто применяется вместе для быстрой очистки данных от дублей.6. Сортировка с учётом локали (-b, -d, -M)
Команда sort поддерживает различные варианты сравнения строк:
-b— игнорирует начальные пробелы.-d— сортирует в «словарном» порядке (игнорирует символы, не являющиеся буквами или цифрами).-M— сортирует по названию месяца (Jan, Feb, Mar и т.д.).
Пример:
sort -M dates.txt
Результат будет отсортирован по календарному порядку месяцев.
7. Объединение нескольких ключей (-k)
Можно комбинировать сортировку сразу по нескольким полям:
sort -t, -k2,2 -k1,1 file.csv
В этом примере данные сначала сортируются по второму столбцу, а при равенстве значений — по первому.
Практические примеры использования команды sort в Linux
Теперь разберём реальные ситуации, где команда sort в Linux значительно ускоряет анализ данных.
Пример 1. Сортировка логов по дате
Предположим, у вас есть файл логов с датами в формате YYYY-MM-DD:
sort -k1,1 logs.txt
Эта команда выведет строки по возрастанию даты. Если нужно — в обратном порядке:
sort -rk1,1 logs.txt
Пример 2. Сортировка списка пользователей по алфавиту
cat users.txt | sort -f
Игнорируя регистр, команда выведет имена пользователей в алфавитном порядке.
Пример 3. Сортировка CSV по зарплате
Если CSV-файл содержит данные вроде:
Имя,Должность,Зарплата
Иван,Тестировщик,70000
Петр,DevOps,120000
Анна,Аналитик,95000
то командой:
sort -t, -k3,3n employees.csv
можно отсортировать сотрудников по зарплате в порядке возрастания.
Пример 4. Сортировка файлов и запись результата в новый файл
Чтобы результат не просто отобразился на экране, а сохранился:
sort -n data.txt > sorted.txt
Теперь отсортированные данные будут в sorted.txt.
Комбинирование команды sort с другими утилитами Linux
Команда sort в Linux часто используется в связке с другими инструментами оболочки — например, grep, awk, uniq или head.
Примеры:
- Найти 10 самых частых слов:
cat text.txt | sort | uniq -c | sort -nr | head -10Здесьsortсначала упорядочивает строки,uniq -cсчитает количество повторов, аsort -nrсортирует результат по числу повторов. - Отобрать только уникальные IP-адреса из лога:
awk '{print $1}' access.log | sort -u
--parallel (количество потоков):
sort --parallel=4 bigdata.txt -o result.txt
Частые ошибки при работе с sort
- Неправильный выбор разделителя. Если данные CSV, не забудьте указать
-t,. - Неверный выбор поля (-k). Параметр
-kдолжен указывать конкретный диапазон столбцов (например,-k2,2). - Пробелы в начале строк. Используйте
-b, чтобы избежать влияния начальных пробелов на порядок сортировки.
Команда sort в Linux — мощный инструмент для обработки данных прямо из терминала. С её помощью можно сортировать большие объемы информации по любым критериям, комбинировать несколько ключей и фильтровать дубликаты. Умение грамотно применять sort — это важный навык для системных администраторов, DevOps-инженеров, тестировщиков и аналитиков данных.