Гид по технологиям

Команда sort в Linux — руководство, флаги и примеры

7 min read Linux Обновлено 03 Jan 2026
sort в Linux: руководство и примеры
sort в Linux: руководство и примеры

Команда sort упорядочивает строки текстовых файлов по разным правилам: лексикографически, численно, по столбцам, по месяцам или случайно. Используйте -o для записи в файл, -k для сортировки по столбцу, -n для числовой сортировки, -r для обратного порядка и -u для удаления дубликатов. В статье — примеры, советы по локали, проверке сортировки и краткие рабочие чек-листы.

Важно: sort не изменяет исходный файл, если вы явно не укажете -o с именем выходного файла.

использование sort в linux

Что такое команда sort?

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

Определение термина: локаль — набор правил для сравнения символов и сортировки (влияет на порядок букв и регистр).

Краткая структура руководства

  • Основной синтаксис и поведение по умолчанию
  • Часто используемые флаги с примерами
  • Продвинутые приёмы: сортировка по столбцам, пайплайны, версии
  • Когда sort не подходит и альтернативы
  • Чек-листы для ролей и тесты приёмки
  • Шпаргалка с командами и безопасные практики

Базовый синтаксис

sort filename

где filename — абсолютный или относительный путь к текстовому файлу.

По умолчанию sort упорядочит строки по следующим правилам:

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

Пример файла textfile.txt, который мы будем использовать в иллюстрациях.

просмотр текстового файла в linux

Выполнение:

sort textfile.txt

Вывод:

сортировка textfile с помощью sort

Создание нового выходного файла

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

sort -o sortedfile filename

Пример:

sort -o sorted.txt textfile.txt

Вывод:

запись результата в новый файл

Важно: при указании имени выходного файла через -o можно перезаписать исходный файл (sort -o file file) — это поддерживается корректно.

Сортировка нескольких файлов

Передайте несколько файлов через пробел — sort объединит их и отсортирует общий поток строк:

sort textfile.txt textfile2.txt

Вывод:

сортировка нескольких файлов

Обратный порядок

Флаг -r меняет порядок на обратный (реверс):

sort -r textfile.txt

Вывод:

обратная сортировка

Числовая сортировка

Чтобы сортировать числа по их значению, используйте -n:

sort -n numbers.txt

Для сортировки по убыванию комбинируйте -n и -r:

sort -rn numbers.txt

Выводы:

сортировка чисел

обратная сортировка чисел

Совет: если числа содержат префиксы/суффиксы (например, 10KB, 2MB), предварительно нормализуйте формат или используйте awk/perl для извлечения чисел.

Игнорирование регистра

По умолчанию регистр учитывается (строчные перед заглавными). Чтобы игнорировать регистр, используйте -f или –ignore-case:

sort -f textfile.txt
sort --ignore-case textfile.txt

Вывод:

игнорирование регистра при сортировке

Сортировка по названиям месяцев

Флаг -M сортирует строки по порядку месяцев (Jan, Feb, …). Удобно для списков с месяцами на английском.

sort -M textfile2.txt

Вывод:

сортировка по месяцам

Примечание: -M ориентируется на аббревиатуры месяцев в локали; для других языков локаль должна соответствовать формату.

Игнорирование ведущих пробелов

Флаг -b пропускает начальные пробелы и табуляции при сравнении строк:

sort -b fileblanks.txt

Вывод:

игнорирование пробелов при сортировке

Сортировка по столбцу

Флаг -k указывает ключ (столбец) для сортировки. Нумерация столбцов начинается с 1.

Пример: сортировать файл output.txt по восьмому столбцу численно в обратном порядке:

sort -k8 -rn output.txt

Вывод:

сортировка по значениям столбца

Совет: используйте -t для задания разделителя полей, например -t”,” для CSV.

Применение sort в пайплайнах

sort часто используют вместе с другими командами. Пример: отсортировать вывод ls по размеру файла:

ls -la | sort -k5 -rn

Вывод:

пайп sort с другими командами

Случайная сортировка

Флаг -R случайным образом перемешивает строки:

sort -R textfile.txt

Вывод:

случайная сортировка

Примечание: для воспроизводимости используйте shuf с параметром –random-source или LANG/CSPRNG, sort -R не предоставляет опции задавать семя.

Сортировка версий

Для корректной сортировки версий используйте -V или –version-sort:

sort -V version.txt
sort --version-sort version.txt

Вывод:

сортировка версий

Это полезно для строк вида 1.2.10 и 1.2.3 — sort -V поймёт числовые компоненты.

Проверка, отсортирован ли файл

Флаг -c проверяет, отсортирован ли файл согласно заданным опциям. Если файл уже отсортирован, sort молчит и возвращает код 0.

sort -c textfile.txt

Если файл не отсортирован, sort выведет первую строку, нарушающую порядок.

Пример с числовой обратной проверкой:

sort -c -rn numbers.txt

Выход (если не отсортирован): sort сообщит об обнаруженной ошибке. После сортировки и проверки:

sort -o sorted.txt -rn numbers.txt
sort -c -rn sorted.txt

Вывод:

проверка файла с sort

проверка числового файла

Удаление дубликатов при сортировке

Флаг -u выводит только уникальные строки (аналогично sort | uniq, но быстрее при больших данных, поскольку сорт уже выполняется):

sort -u duplicate.txt

Вывод:

удаление дубликатов

Если нужно сохранить порядок первой встречи с каждой строкой (stable unique), используйте awk/awk-подход или объединяйте сортировку с методиками, сохраняющими порядок.

Когда sort не подходит — примеры и альтернативы

  • Нужен стабильный порядок без предварительной сортировки по всему набору (оставьте исходный порядок) — используйте awk/perl с хеш-таблицей для удаления дубликатов.
  • Работаете с очень большими файлами и не хотите переписывать весь файл — рассмотрите потоковую фильтрацию и внешнюю сортировку GNU sort (он умеет использовать временные файлы и ограничивать память через –buffer-size).
  • Требуется случайная выборка без повторов — используйте shuf.
  • Нужна семантическая сортировка (например, даты в произвольном формате) — предварительно нормализуйте даты с помощью awk/dateutils.

Альтернативы:

  • uniq — удаляет подряд идущие дубликаты (часто в связке sort | uniq)
  • awk/perl/python — гибкая обработка и выделение ключей
  • datamash — агрегация и сортировка столбцов
  • shuf — случайная перестановка

Практическая мини-методика для надёжной сортировки файлов

  1. Определите ключ сортировки и разделитель полей (если есть таблица).
  2. Проверьте локаль: echo $LC_ALL $LANG. При необходимости установите LC_ALL=C для байтовой сортировки или ru_RU.UTF-8 для локализованной.
  3. Выполните тестовую сортировку и сравните первые/последние строки.
  4. Запишите результат в новый файл через -o или перенаправление, не перезаписывайте исходник, пока не проверите.
  5. Выполните sort -c на итоговом файле для проверки.

Чек-листы по ролям

Администратор:

  • Убедиться в корректной локали перед массовой сортировкой.
  • Использовать –buffer-size для управления памятью при больших файлах.
  • Логировать команды и результаты в CI/CD скриптах.

Разработчик:

  • Использовать -k и -t для точного выбора столбца.
  • Тестировать на краевых случаях: пустые строки, пробелы, ведущие нули.
  • Писать тесты приёмки для сортировок в pipeline.

Дата-аналитик:

  • Нормализовать числовые и временные поля перед сортировкой.
  • Использовать sort -V для версий и –key для сложных ключей.
  • Проверять стабильность сортировки при связке с uniq.

Тесты приёмки и кейсы

Критерии приёмки для команды, сортирующей CSV по 3-му столбцу численно:

  • Входной файл содержит строки с разделителем “,”.
  • Команда: sort -t”,” -k3,3n input.csv -o output.csv
  • Проверки:
    • output.csv отсортирован по третьему столбцу в порядке возрастания (sort -c -t”,” -k3,3n output.csv возвращает 0).
    • Количество строк не уменьшилось (wc -l input.csv == wc -l output.csv).
    • Нет дополнительных символов конца строки PEM.

Кейсы для ручного тестирования:

  • Числа со знаком и ведущими нулями.
  • Пустые поля в ключевом столбце.
  • Поля с пробелами и кавычками.

Советы по локали и стабильности

  • LC_ALL=C ускорит сортировку и даст предсказуемый байтовый порядок (полезно для скриптов).
  • Локализованная сортировка (ru_RU.UTF-8) изменит порядок букв и может поместить буквы с диакритикой в другое место.
  • GNU sort не гарантирует стабильность при равных ключах, если не используется специальный подход; комбинируйте ключи, чтобы задать дополнительный критерий сорто́вки.

Шпаргалка: основные флаги

  • -o FILE — записать в FILE
  • -r — обратный порядок
  • -n — числовая сортировка
  • -f — игнорировать регистр
  • -M — сортировка по месяцам
  • -b — игнорировать ведущие пробелы
  • -k POS — сортировка по ключу (столбцу)
  • -t CHAR — разделитель полей
  • -R — случайная сортировка
  • -V — сортировка версий
  • -u — уникальные строки
  • -c — проверить, отсортирован ли файл

Примеры:

sort -t"," -k2,2 -n data.csv          # по 2 столбцу как числовому
sort -u names.txt                      # уникальные строки
ls -la | sort -k5 -rn                  # файлы по размеру, убывание
sort -V packages.txt                   # по семантическим версиям
LC_ALL=C sort file.txt                 # байтовая, детерминированная сортировка

Минимизация рисков и безопасность

  • Не модифицируйте исходные данные без резервной копии.
  • Для чувствительных данных проверьте права доступа на выходные файлы.
  • Сортировка больших файлов может создать временные файлы — контролируйте доступное свободное место.

Короткий глоссарий

  • Ключ — поле или столбец, по которому производится сравнение.
  • Локаль — набор правил сравнения символов и форматирования данных.
  • Стабильная сортировка — сохраняет исходный порядок равных элементов.

Примеры распространённых ошибок и как их избежать

  • Ошибка: данные с запятыми внутри полей (CSV) ломают -t”,”). Решение: предварительно экранируйте или используйте специализированные парсеры CSV.
  • Ошибка: неожиданный порядок символов из‑за локали. Решение: явно задайте LC_ALL=C или нужную локаль.
  • Ошибка: думают, что -u сохраняет порядок первой встречи. Решение: -u удаляет дубликаты после сортировки; для сохранения первого вхождения используйте awk.

Заключение

Команда sort — простой и мощный инструмент для упорядочивания строк в текстовых файлах. Она покрывает большинство сценариев: от простой алфавитной сортировки до версионной и числовой сортировок. Для сложных случаев комбинируйте sort с awk, uniq и другими утилитами в пайплайнах.

Короткий чек: определите ключи, проверьте локаль, используйте -o для записи, проверяйте результат через -c.

Дополнительные ресурсы: man sort, info coreutils sort.

просмотр файла с cat

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Исправить «Удаленное устройство не принимает подключение»
Сеть

Исправить «Удаленное устройство не принимает подключение»

Закрепить ползунок громкости в Windows 11
Windows 11

Закрепить ползунок громкости в Windows 11

Mindfulness и Reflect на Apple Watch
Здоровье

Mindfulness и Reflect на Apple Watch

Curtail — сжатие изображений в Linux
Linux

Curtail — сжатие изображений в Linux

Passkey для WhatsApp на Android — как настроить
Безопасность

Passkey для WhatsApp на Android — как настроить

Восстановление удалённых постов Facebook
Социальные сети

Восстановление удалённых постов Facebook