AWK предоставляет несколько способов для считывания стандартного вывода в программу. В этой статье мы покажем несколько полезных примеров применения скриптового языка AWK для фильтрации вывода команд терминала Linux, которые помогут Вам более эффективно работать в командной строке.
Также советуем ознакомиться с седьмой статьей из цикла: Как использовать команду next в AWK.
Содержимое:
- Команда ls -l как пример для обработки стандартного вывода
- Фильтрация стандартного вывода по шаблону в AWK
- Выводы
Команда ls -l как пример для обработки стандартного вывода
Для начала давайте рассмотрим команду терминала, которую будем использовать в примерах — ls -l. Она возвращает список файлов и папок в текущей директории, отформатированный в виде таблицы. В стандартном выводе этой команды содержится следующая информация для каждого объекта:
- права доступа;
- количество ссылок на объект;
- имя владельца;
- имя группы;
- размер файла;
- дата и время последней модификации;
- название.
Введем ls -l в командной строке:
Фильтрация стандартного вывода по шаблону в AWK
Так как команда ls -l выводит информацию в виде таблицы, язык сценариев AWK сможет обработать ее поля. Как происходит эта обработка, мы подробно описали в нашем руководстве по AWK.
Отображение конкретных столбцов вывода ls -l
В первом примере выведем на экран определенные столбцы информации ls -l. Например, третью ($3), шестую ($6) и девятую ($9) колонки. Чтобы отобразить их на экране — используем следующую команду:
Обработка вывода по значению поля столбца в AWK
В шестом столбце стандартного вывода утилиты ls -l записано название месяца, когда произошла последняя модификация файла. Допустим, нам нужно отобразить на экране только те файлы, которые были последний раз изменены в апреле. Сделать это можно следующим образом:
Подробно рассмотрим порядок действий, которые выполняет конструкция:
awkпринимает стандартный вывод командыls -lв качестве стандартного ввода и фильтрует строки, оставляя те, у которых значение 6-го поля ($6) равноApr(апрель).- Далее с помощью оператора
print $0на экран выводятся записи удовлетворяющие указанному выше условию.
Таким образом, мы получаем записи только те строки, у которых дата последней модификации соответствует указанному месяцу.
Фильтрация стандартного вывода команды cat в AWK
Утилитаcat в Linux используется для чтения / объединения файлов и перенаправления результатов на стандартный вывод (поток 1 — STDOUT). Если содержимое файлов слишком большое, то его можно отфильтровать с помощью скриптового языка AWK. В этом примере будем использовать текстовый файл из прошлой статьи курса (Как использовать команду next в AWK). Попробуем отобразить на экране строки, значение третьего поля которых равно B. Для этого введем следующую команду:
В приведенном примере:
cat students.txt— команда, которая направляет содержимое файла на стандартный вывод (stdout).awk '$3 ~ /B/{print}'— команда, которая отображает на экране только те строки, в которых в третьем поле находится букваB:- символ
~— означает сопоставление с регулярным выражением; /B/— соответствует любой строке, содержащей буквуB;{print}— означает вывод наstdoutстроки, которая удовлетворяет условию фильтрации.
- символ
Выводы
Мы рассмотрели использование языка сценариев AWK для фильтрации стандартного вывода других команд в терминале Linux. А также привели практические примеры, демонстрирующие то, как можно выбирать строки на основе шаблона. Используя полученные знания, Вы получите более читаемый и информативный вывод, что может значительно упростить работу в терминале.
Спасибо за время, уделенное прочтению статьи!
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы 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.



























