Считывание стандартного вывода в AWK

Считывание стандартного вывода в AWK

Рубрики:

Linux, Терминал Linux

Метки:

,

AWK предоставляет несколько способов для считывания стандартного вывода в программу. В этой статье мы покажем несколько полезных примеров применения скриптового языка AWK для фильтрации вывода команд терминала Linux, которые помогут Вам более эффективно работать в командной строке.

Также советуем ознакомиться с седьмой статьей из цикла: Как использовать команду next в AWK.

Содержимое:

  1. Команда ls -l как пример для обработки стандартного вывода
  2. Фильтрация стандартного вывода по шаблону в AWK
    1. Отображение конкретных столбцов вывода ls -l
    2. Обработка вывода по значению поля столбца в AWK
    3. Фильтрация стандартного вывода команды cat в AWK
  3. Выводы

Команда ls -l как пример для обработки стандартного вывода

Для начала давайте рассмотрим команду терминала, которую будем использовать в примерах — ls -l. Она возвращает список файлов и папок в текущей директории, отформатированный в виде таблицы. В стандартном выводе этой команды содержится следующая информация для каждого объекта:

  • права доступа;
  • количество ссылок на объект;
  • имя владельца;
  • имя группы;
  • размер файла;
  • дата и время последней модификации;
  • название.

Введем ls -l в командной строке:

 

ls -l

Фильтрация стандартного вывода по шаблону в AWK

Так как команда ls -l выводит информацию в виде таблицы, язык сценариев AWK сможет обработать ее поля. Как происходит эта обработка, мы подробно описали в нашем руководстве по AWK.

 

Отображение конкретных столбцов вывода ls -l

В первом примере выведем на экран определенные столбцы информации ls -l. Например, третью ($3), шестую ($6) и девятую ($9) колонки. Чтобы отобразить их на экране — используем следующую команду:

 

print-3-6-9 awk

Обработка вывода по значению поля столбца в AWK

В шестом столбце стандартного вывода утилиты ls -l записано название месяца, когда произошла последняя модификация файла. Допустим, нам нужно отобразить на экране только те файлы, которые были последний раз изменены в апреле. Сделать это можно следующим образом:

 

фильтрация по значению поля

Подробно рассмотрим порядок действий, которые выполняет конструкция:

  1. awk принимает стандартный вывод команды ls -l в качестве стандартного ввода и фильтрует строки, оставляя те, у которых значение 6-го поля ($6) равно Apr (апрель).
  2. Далее с помощью оператора print $0 на экран выводятся записи удовлетворяющие указанному выше условию.

Таким образом, мы получаем записи только те строки, у которых дата последней модификации соответствует указанному месяцу.

Фильтрация стандартного вывода команды cat в AWK

Утилитаcat в Linux используется для чтения / объединения файлов и перенаправления результатов на стандартный вывод (поток 1 — STDOUT). Если содержимое файлов слишком большое, то его можно отфильтровать с помощью скриптового языка AWK. В этом примере будем использовать текстовый файл из прошлой статьи курса (Как использовать команду next в AWK). Попробуем отобразить на экране строки, значение третьего поля которых равно B. Для этого введем следующую команду:

 

students-3-B awk

В приведенном примере:

  1. cat students.txt — команда, которая направляет содержимое файла на стандартный вывод (stdout).
  2. 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 с трудоустройством!

Спешите подать заявку! Группы стартуют 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.
Вы должны согласиться с условиями для продолжения


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