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.