Как использовать блоки BEGIN и END в AWK

Как использовать блоки BEGIN и END в AWK

Рубрики:

Linux, Терминал Linux

Метки:

,

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

Также советуем ознакомиться с девятой статьей из цикла: Переменные, числовые выражения и операторы присваивания в AWK.

Содержание:

  1. Синтаксис шаблонов с блоками BEGIN и END
  2. Как использовать блоки BEGIN и END
    1. Выполнение только блока BEGIN
    2. Выполнение только блока END
    3. Одновременное использование BEGIN и END
  3. Выводы

Синтаксис шаблонов с блоками BEGIN и END

Блоки BEGIN и END не являются обязательными, но их использование может значительно упростить обработку данных и позволит проводить различные манипуляции с ними. Перед тем, как перейти к практическим примерам, предлагаем Вам ознакомиться с синтаксисом команды с этими блоками:

 

Важно: блок BEGIN объявляется только один раз в начале программы, а блок END — один раз в конце.

Как использовать блоки BEGIN и END

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

  • выполнение только блока BEGIN;
  • выполнение только блока END;
  • одновременное использование BEGIN и END.

Для примера будем обрабатывать файл students.txt из предыдущих статей.

 

Выполнение только блока BEGIN

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

 

only-begin-block awk

Этот код использует блок BEGIN для создания переменной var и присваивания ей значения (10) до того, как AWK начнет обрабатывать файл students.txt. Затем язык сценариев проводит операцию сложения чисел второго столбца и значения переменной var, после чего направляет результат на стандартный вывод.

Выполнение только блока END

В AWK блок END выполняется после перебирания всех строк входного файла и позволяет осуществить некоторые действия в конце обработки. С помощью него можно производить различные операции, такие как подсчет суммы / среднего арифметического чисел, вычисление максимума / минимума статистических показателей и т. п. Для примера подсчитаем среднее значение чисел во втором столбце файла:

 

only-end-block

Код выполняет следующие действия:

  1. В основной программе суммируются значения второго столбца в переменную sum и увеличивается счетчик count на 1.
  2. Блок END вычисляет средние среднее значение путем деления sum на count.
  3. Функция print выводит заданный текст вместе с результатом вычисления.

Одновременное использование BEGIN и END

При одновременном использовании двух блоков можно выполнять различные настройки и инициализации в блоке BEGIN. Затем использовать их для обработки данных в основной части программы. После чего проводить какую-то дополнительную обработку результатов в блоке END.

В качестве примера приведем код, который подсчитывает общее количество строк в файле:

 

begin-end-block

Подробнее рассмотрим команду:

  1. BEGIN {count=0} — задает значение 0 переменной count.
  2. count++  — увеличивает значение переменной count на 1 для каждой записи в файле.
  3. END {print "Total number of records:",count} — выводит значение count на экран.

Выводы

В этой статье были рассмотрены блоки BEGIN и END в AWK. Они предоставляют широкие возможности для фильтрации данных. И позволяют выполнять дополнительные действия перед обработкой информации и после ее завершения, соответственно.

Спасибо за время, уделенное прочтению статьи!

Если возникли вопросы — задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

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


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