В скриптовом языке AWK можно использовать переменные, числовые выражения и операторы присваивания для более гибкой и удобной фильтрации данных. Они позволяют работать с информацией и изменять ее содержимое в процессе выполнения программы обработки. В этой статье мы рассмотрим примеры использования этих возможностей AWK на практике.
Также советуем ознакомиться с восьмой статьей из цикла: Считывание стандартного вывода в AWK.
Содержимое:
Переменные в AWK
Переменные в AWK нужны для хранения значений, которые могут применяться в процессе выполнения кода. Синтаксис объявления переменной выглядит следующим образом:
Покажем Вам несколько примеров:
Для присваивания значения переменной в AWK используется оператор =
. К примеру, запишем в переменную var
первое поле каждой строки из файла students.txt
и выведем ее значение на экран:
У Вас есть возможность присвоить значение переменной из стандартного вывода, используя конвейер. Например, выполним команду uname
для вывода информации о системе, а затем с помощью awk
извлечем второе поле (имя хоста) и сохраним его в переменной var
:
Подробнее о синтаксисе данной команды:
uname -a
— команда, которая выводит информацию о системе;|
— конвейер, передающий вывода команды слева как ввод команды справа;'{var=$2 ; print var;}'
— присваивает значение второго поля ($2
) переменнойvar
и выводит его на экран с помощью командыprint
.
Числовые выражения в AWK
Одним из инструментов для обработки текста являются числовые выражения. Они позволяют совершать математические операции над числами, находящимися в файле. Для числовых выражений в AWK существуют арифметические операторы, такие как:
+
— сложение;-
— вычитание;*
— умножение;/
— деление;%
— остаток от деления.
Числовые выражения могут использоваться для подсчета количества строк в файле, вычисление суммы чисел и т.д.
Например, нам нужно вычислить среднее значение чисел второго поля всех строк в файле. Для решения этой задачи выполним приведенную ниже команду:
Данный код работает следующим образом:
- Для каждой строки язык сценариев добавляет значение из второго столбца к переменной
sum
и увеличивает счетчикcount
на 1. - По достижении конца файла AWK выполняет блок кода
END
, который вычисляет среднее значение как сумму всех чисел (sum
) во втором столбце, разделенную на количество строк (count
). - Результат направляется в стандартный вывод с помощью оператора
print
.
Операторы присваивания в AWK
Операторы присваивания хранят значение в объекте, заданном левым операндом. В AWK существует несколько операторов присваивания:
=
— присваивает значение переменной;+=
— увеличивает значение переменной на заданное число;-=
— уменьшает значение переменной на заданное число;*=
— умножает значение первого операнда на значение второго операнда;/=
— делит значение первого операнда на значение второго операнда.
Для примера выведем на экран сумму всех чисел второго столбца файла students.txt
:
Также с помощью операторов присваивания можно изменять значения полей файла. Допустим, нам нужно увеличить число во втором поле каждой строки на 1 и сохранить изменения в новый файл:
Данный код использует оператор присваивания +=
для увеличения значения второго поля каждой строки файла на 1. Затем он выводит измененные строки на экран с помощью команды print
и перенаправляет результат в новый файл students_new.txt
.
Выводы
В статье мы рассмотрели важные инструменты языка 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.