Команда sort
— это инструмент командной строки Linux, который упорядочивает строки из вывода в алфавитном порядке и выводит результат на экран. Данная утилита не изменяет само содержимое файла, поскольку работает только с содержимым потока 1 (stdout ). При этом команда sort
крайне полезна при работе с текстовыми файлами. В этой статье мы покажем несколько полезных практических примеров использования утилиты.
Содержание:
- Синтаксис команды sort
- Примеры использования
- Отсортируйте содержимое в алфавитном порядке
- Запишите результат сортировки в файл
- Отсортируйте строки в обратном порядке
- Сортируйте данные по заданному ключу
- Используйте sort для работы с выводом команд
- Удалите дубликаты строк при сортировке
- Сортируйте вывод содержимого сразу нескольких файлов
- Удалите повторяющиеся элементы нескольких файлов
- Сортируйте строки сразу по нескольким ключам
- Выводы
Синтаксис команды sort
Эта команда предустановлена в большинстве современных версий популярных дистрибутивов Linux. Поэтому сразу перейдем к ее синтаксису и опциям. В этой статье нам понадобятся такие параметры команды sort
:
-r
— отсортирует содержимое файла в порядке, обратном алфавитному;-u
— повторяющиеся строки будут игнорироваться при сортировке;-k
— устанавливает ключ, по которому будет происходить упорядочение строк;-n
— используется для сортировки числовых строк.
Чтобы детальнее изучить синтаксис, возможности и параметры команды sort
— введите в командную строку следующую команду:
Примеры использования
Для начала давайте создадим текстовый файл text.txt
, в котором будет содержаться список слов:
Данный файл будет использоваться в качестве примера для демонстрации возможностей сортировки вывода с помощью команды sort
.
Отсортируйте содержимое в алфавитном порядке
Итак, приступим к сортировке текстового содержимого в алфавитном порядке. Для этого достаточно ввести команду и название файла в качестве аргумента:
Как Вы могли заметить, строки в выводе были отсортированы в алфавитном порядке.
Запишите результат сортировки в файл
Если Вам нужно сохранить результат сортировки в файл — используйте перенаправление стандартного вывода (stdout) с указанием имени нового файл. Допустим, что Вам нужно записать упорядоченные в алфавитном порядке строки в файл 123.txt
:
Читайте также: Lolcat — инструмент для вывода цветов радуги в консоли Linux.
Отсортируйте строки в обратном порядке
Данная команда позволяет сортировать строки не только в алфавитном порядке. Используя опцию -r
, Вы упорядочите текст в порядке, обратном алфавитному. В качестве примера попробуем выполнить такую сортировку и сохранить результаты в файл 321.txt
:
Сортируйте данные по заданному ключу
Для начала — запишем вывод команды ls -l
в файл (длинный формат вывода команды, позволяющей увидеть список содержимого каталога со всеми атрибутами файлов):
Теперь попробуем отсортировать содержимое файла по ключу — то есть, выберем столбец, на основании данных из которого будет выполняться сортировка. В нашем случае сортировка будет выполняться на основе 2-го столбца (первый столбец вывода с цифрами) — используем опцию -k
и 2
в качестве аргумента. Кроме того, добавим параметр -n
, который позволяет сортировать данные по числовым значениям:
Как Вы могли заметить, строки были отсортированы по возрастанию значений во втором столбце.
На этот раз давайте отсортируем данные из файла на основании значений из 9-го столбца. Эта колонка содержит в себе только текстовые символы, поэтому Вам не нужно использовать параметр -n
:
Читайте также: Как отсортировать вывод команды «ls» по последним изменениям даты и времени
Используйте sort для работы с выводом команд
Чтобы упорядочить вывод команды, необязательно всегда записывать его в файл. Вы можете использовать комбинацию команды sort
с нужной для Вас командой. В этом поможет символ |
, объединяющий команды в конвейер, который передаст вывод первой команды на ввод второй:
В результате сортировка вывода будет выполняться в реальном времени.
Удалите дубликаты строк при сортировке
Часто так бывает, что в файле встречаться одинаковые строки. Если они Вам не нужны в отсортированном выводе — используйте опцию -u
:
Сортируйте вывод содержимого сразу нескольких файлов
Для начала у уже ранее созданному файлу list.txt
создадим новый файл list1.txt
и заполним его выводом команды ls -lA
:
Чтобы выполнить сортировку содержимого сразу из двух файлов — достаточно просто перечислить их через пробел как отдельные аргументы команды sort
:
Читайте также: 10 примеров команд lsof в Linux
Удалите повторяющиеся элементы нескольких файлов
Как Вы могли заметить, в прошлом примере наблюдалось повторение строк в выводе. Чтобы этого избежать, Вы можете снова использовать опцию -u
:
Сортируйте строки сразу по нескольким ключам
В одном из примеров мы уже показывали сортировку по конкретному столбцу. Стоит отметить, что Вы можете упорядочивать строки на основании более чем одного столбца. Для этого используйте опцию -t
— она позволит задать символ-разделитель для ключей (например — запятую). Далее просто перечислите нужные Вам ключи через разделитель:
Выводы
Мы выяснили для чего и как использовать команду sort
. А также — разобрали несколько примеров ее использования с разными опциями и различным количеством файлов. Эти навыки повысят Ваш уровень знаний и упростят работу с файлами.
Спасибо за время, уделенное прочтению статьи!
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.