Одними из ключевых элементов языка сценариев AWK являются блоки BEGIN
и END
, которые применяются для выполнения определенных задач до и после чтения файла соответственно. В этой статье по AWK мы рассмотрим примеры использования этих блоков, а также детально разберем их синтаксис и особенности.
Также советуем ознакомиться с девятой статьей из цикла: Переменные, числовые выражения и операторы присваивания в AWK.
Содержание:
Синтаксис шаблонов с блоками BEGIN и END
Блоки BEGIN
и END
не являются обязательными, но их использование может значительно упростить обработку данных и позволит проводить различные манипуляции с ними. Перед тем, как перейти к практическим примерам, предлагаем Вам ознакомиться с синтаксисом команды с этими блоками:
Важно: блок BEGIN
объявляется только один раз в начале программы, а блок END
— один раз в конце.
Как использовать блоки BEGIN и END
Так как эти блоки необязательно применять в коде сценарного языка AWK, значит их можно использовать по отдельности. Рассмотрим на практике три различных случая:
- выполнение только блока
BEGIN
; - выполнение только блока
END
; - одновременное использование
BEGIN
иEND
.
Для примера будем обрабатывать файл students.txt
из предыдущих статей.
Выполнение только блока BEGIN
BEGIN
в AWK — это блок кода, который выполняется один раз перед тем, как скриптовый язык начнет обрабатывать входные данные. В этом блоке обычно происходит инициализация переменных, установка значений флагов и другие операции, которые необходимы для дальнейшей обработки данных. В нашем файле во втором столбце содержатся только числа. Допустим, что нам нужно увеличить каждое из них на 10. Для этого напишем следующий код в терминале:
Этот код использует блок BEGIN
для создания переменной var
и присваивания ей значения (10) до того, как AWK начнет обрабатывать файл students.txt
. Затем язык сценариев проводит операцию сложения чисел второго столбца и значения переменной var
, после чего направляет результат на стандартный вывод.
Выполнение только блока END
В AWK блок END
выполняется после перебирания всех строк входного файла и позволяет осуществить некоторые действия в конце обработки. С помощью него можно производить различные операции, такие как подсчет суммы / среднего арифметического чисел, вычисление максимума / минимума статистических показателей и т. п. Для примера подсчитаем среднее значение чисел во втором столбце файла:
Код выполняет следующие действия:
- В основной программе суммируются значения второго столбца в переменную
sum
и увеличивается счетчикcount
на 1. - Блок
END
вычисляет средние среднее значение путем деленияsum
наcount
. - Функция
print
выводит заданный текст вместе с результатом вычисления.
Одновременное использование BEGIN и END
При одновременном использовании двух блоков можно выполнять различные настройки и инициализации в блоке BEGIN
. Затем использовать их для обработки данных в основной части программы. После чего проводить какую-то дополнительную обработку результатов в блоке END
.
В качестве примера приведем код, который подсчитывает общее количество строк в файле:
Подробнее рассмотрим команду:
BEGIN {count=0}
— задает значение 0 переменнойcount
.count++
— увеличивает значение переменнойcount
на 1 для каждой записи в файле.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 с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.