sort

Команда sort в Linux: что это и зачем нужна

Команда sort в Linux используется для сортировки текстовых данных в файлах или стандартном потоке ввода. Это один из базовых инструментов обработки текстов в Unix-подобных системах, который помогает быстро упорядочить строки по различным критериям — алфавиту, числам, дате или пользовательским полям.

Команда работает построчно: каждая строка рассматривается как отдельная запись, и результат сортировки выводится на стандартный вывод, если не указано иное.

Пример простого использования:

Bash
sort file.txt

Эта команда отсортирует строки файла file.txt в алфавитном порядке и выведет результат в консоль.

Основные параметры команды sort в Linux

Функциональность команды sort в Linux определяется множеством параметров. Рассмотрим наиболее часто применяемые ключи, которые помогают адаптировать сортировку под конкретные задачи.

1. Сортировка по числам (-n)

По умолчанию sort сортирует строки как текст. Чтобы сортировать по числовым значениям, используют флаг -n:

Bash
sort -n numbers.txt

Файл будет отсортирован по числам, а не по текстовому представлению (например, 2 будет идти перед 10).

Совет: если ваши данные содержат числа с плавающей точкой, sort -n корректно их интерпретирует.

2. Обратная сортировка (-r)

Чтобы изменить порядок сортировки на обратный, добавьте флаг -r:

Bash
sort -r file.txt

Теперь строки будут выведены в обратном порядке — от Z к A или от большего числа к меньшему.
Эта комбинация (sort -nr) часто используется для сортировки чисел по убыванию.

3. Сортировка по определённому столбцу (-k)

Когда данные разделены пробелами, табуляцией или другими символами, можно указать поле (колонку), по которому производится сортировка.

Bash
sort -k 2 data.txt

Команда отсортирует строки по второму столбцу.

Если данные разделены, например, запятыми, можно указать разделитель:

Bash
sort -t, -k 3 file.csv

Здесь -t, задаёт запятую как разделитель, а -k 3 — третий столбец в качестве ключа сортировки.

4. Игнорирование регистра (-f)

Чтобы сортировка не зависела от регистра букв (т.е. “Linux” и “linux” считались одинаковыми), применяют флаг -f:

Bash
sort -f words.txt

5. Удаление дубликатов (-u)

Флаг -u исключает повторяющиеся строки, оставляя только уникальные значения:

Bash
sort -u list.txt

Это особенно полезно при анализе логов или списков пользователей.

Совет: комбинация sort -u и uniq часто применяется вместе для быстрой очистки данных от дублей.

6. Сортировка с учётом локали (-b, -d, -M)

Команда sort поддерживает различные варианты сравнения строк:

  • -b — игнорирует начальные пробелы.
  • -d — сортирует в «словарном» порядке (игнорирует символы, не являющиеся буквами или цифрами).
  • -M — сортирует по названию месяца (Jan, Feb, Mar и т.д.).

Пример:

Bash
sort -M dates.txt

Результат будет отсортирован по календарному порядку месяцев.

7. Объединение нескольких ключей (-k)

Можно комбинировать сортировку сразу по нескольким полям:

Bash
sort -t, -k2,2 -k1,1 file.csv

В этом примере данные сначала сортируются по второму столбцу, а при равенстве значений — по первому.

Практические примеры использования команды sort в Linux

Теперь разберём реальные ситуации, где команда sort в Linux значительно ускоряет анализ данных.

Пример 1. Сортировка логов по дате

Предположим, у вас есть файл логов с датами в формате YYYY-MM-DD:

Bash
sort -k1,1 logs.txt

Эта команда выведет строки по возрастанию даты. Если нужно — в обратном порядке:

Bash
sort -rk1,1 logs.txt

Пример 2. Сортировка списка пользователей по алфавиту

Bash
cat users.txt | sort -f

Игнорируя регистр, команда выведет имена пользователей в алфавитном порядке.

Пример 3. Сортировка CSV по зарплате

Если CSV-файл содержит данные вроде:

Bash
Имя,Должность,Зарплата
Иван,Тестировщик,70000
Петр,DevOps,120000
Анна,Аналитик,95000

то командой:

Bash
sort -t, -k3,3n employees.csv

можно отсортировать сотрудников по зарплате в порядке возрастания.

Пример 4. Сортировка файлов и запись результата в новый файл

Чтобы результат не просто отобразился на экране, а сохранился:

Bash
sort -n data.txt > sorted.txt

Теперь отсортированные данные будут в sorted.txt.

Комбинирование команды sort с другими утилитами Linux

Команда sort в Linux часто используется в связке с другими инструментами оболочки — например, grep, awk, uniq или head.

Примеры:

  1. Найти 10 самых частых слов: cat text.txt | sort | uniq -c | sort -nr | head -10 Здесь sort сначала упорядочивает строки, uniq -c считает количество повторов, а sort -nr сортирует результат по числу повторов.
  2. Отобрать только уникальные IP-адреса из лога: awk '{print $1}' access.log | sort -u
Совет: для повышения производительности сортировки больших файлов используйте флаг --parallel (количество потоков):

Bash
sort --parallel=4 bigdata.txt -o result.txt

Частые ошибки при работе с sort

  • Неправильный выбор разделителя. Если данные CSV, не забудьте указать -t,.
  • Неверный выбор поля (-k). Параметр -k должен указывать конкретный диапазон столбцов (например, -k2,2).
  • Пробелы в начале строк. Используйте -b, чтобы избежать влияния начальных пробелов на порядок сортировки.

Команда sort в Linux — мощный инструмент для обработки данных прямо из терминала. С её помощью можно сортировать большие объемы информации по любым критериям, комбинировать несколько ключей и фильтровать дубликаты. Умение грамотно применять sort — это важный навык для системных администраторов, DevOps-инженеров, тестировщиков и аналитиков данных.