Как использовать sort в Linux — часть 1

Как использовать sort в Linux — часть 1

Рубрики:

Linux, Терминал Linux

Метки:

, , ,

Команда sort — это инструмент командной строки Linux, который упорядочивает строки из вывода в алфавитном порядке и выводит результат на экран. Данная утилита не изменяет само содержимое файла, поскольку работает только с содержимым потока 1 (stdout ). При этом команда sort крайне полезна при работе с текстовыми файлами. В этой статье мы покажем несколько полезных практических примеров использования утилиты.

Содержание:

  1. Синтаксис команды sort
  2. Примеры использования
    1. Отсортируйте содержимое в алфавитном порядке
    2. Запишите результат сортировки в файл
    3. Отсортируйте строки в обратном порядке
    4. Сортируйте данные по заданному ключу
    5. Используйте sort для работы с выводом команд
    6. Удалите дубликаты строк при сортировке
    7. Сортируйте вывод содержимого сразу нескольких файлов
    8. Удалите повторяющиеся элементы нескольких файлов
    9. Сортируйте строки сразу по нескольким ключам
  3. Выводы

Синтаксис команды sort

Эта команда предустановлена в большинстве современных версий популярных дистрибутивов Linux. Поэтому сразу перейдем к ее синтаксису и опциям. В этой статье нам понадобятся такие параметры команды sort:

  • -r — отсортирует содержимое файла в порядке, обратном алфавитному;
  • -u — повторяющиеся строки будут игнорироваться при сортировке;
  • -k — устанавливает ключ, по которому будет происходить упорядочение строк;
  • -n — используется для сортировки числовых строк.

Чтобы детальнее изучить синтаксис, возможности и параметры команды sort — введите в командную строку следующую команду:

 

sort help

Примеры использования

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

 

text file
Данный файл будет использоваться в качестве примера для демонстрации возможностей сортировки вывода с помощью команды sort.

Отсортируйте содержимое в алфавитном порядке

Итак, приступим к сортировке текстового содержимого в алфавитном порядке. Для этого достаточно ввести команду и название файла в качестве аргумента:

 

Сортированный файл

Как Вы могли заметить, строки в выводе были отсортированы в алфавитном порядке.

Запишите результат сортировки в файл

Если Вам нужно сохранить результат сортировки в файл — используйте перенаправление стандартного вывода (stdout) с указанием имени нового файл. Допустим, что Вам нужно записать упорядоченные в алфавитном порядке строки в файл 123.txt:

 

Запись в файл sort
Читайте также: Lolcat — инструмент для вывода цветов радуги в консоли Linux.

Отсортируйте строки в обратном порядке

Данная команда позволяет сортировать строки не только в алфавитном порядке. Используя опцию -r, Вы упорядочите текст в порядке, обратном алфавитному. В качестве примера попробуем выполнить такую сортировку и сохранить результаты в файл 321.txt:

 

Сортировка в обратном порядке

Сортируйте данные по заданному ключу

Для начала — запишем вывод команды ls -l в файл (длинный формат вывода команды, позволяющей увидеть список содержимого каталога со всеми атрибутами файлов):

 

Запись в файл

Теперь попробуем отсортировать содержимое файла по ключу — то есть, выберем столбец, на основании данных из которого будет выполняться сортировка. В нашем случае сортировка будет выполняться на основе 2-го столбца (первый столбец вывода с цифрами) — используем опцию -k и 2 в качестве аргумента. Кроме того, добавим параметр -n, который позволяет сортировать данные по числовым значениям:

 

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

Как Вы могли заметить, строки были отсортированы по возрастанию значений во втором столбце.

На этот раз давайте отсортируем данные из файла на основании значений из 9-го столбца. Эта колонка содержит в себе только текстовые символы, поэтому Вам не нужно использовать параметр -n:

 

Сортировка по 9 столбцу
Читайте также: Как отсортировать вывод команды «ls» по последним изменениям даты и времени

Используйте sort для работы с выводом команд

Чтобы упорядочить вывод команды, необязательно всегда записывать его в файл. Вы можете использовать комбинацию команды sort с нужной для Вас командой. В этом поможет символ |, объединяющий команды в конвейер, который передаст вывод первой команды на ввод второй:

 

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

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

Часто так бывает, что в файле встречаться одинаковые строки. Если они Вам не нужны в отсортированном выводе — используйте опцию -u:

 

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

Сортируйте вывод содержимого сразу нескольких файлов

Для начала у уже ранее созданному файлу 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 с трудоустройством!

Спешите подать заявку! Группы стартуют 25 января, 26 февраля, 22 марта, 26 апреля, 24 мая, 21 июня, 26 июля, 23 августа, 20 сентября, 25 октября, 22 ноября, 20 декабря.
Что Вы получите?
  • Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
  • Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проведем вечерние онлайн-лекции на нашей платформе.
  • Согласуем с вами удобное время для практик.
  • Если хотите индивидуальный график — обсудим и реализуем.
  • Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
  • Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
А еще поможем Вам:
  • отредактировать или создать с нуля резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco, Linux LPI, кибербезопасность, DevOps / DevNet, Python, подайте заявку или получите бесплатную консультацию.

Рубрики:

Linux, Терминал Linux

Метки:

, , ,

Больше похожих постов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения


Поиск по сайту
Лучшее
Популярное
Рубрики
Меню