Переменные, числовые выражения и операторы присваивания в AWK

Переменные, числовые выражения и операторы присваивания в AWK

Рубрики:

Linux, Терминал Linux

Метки:

,

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

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

Содержимое:

  1. Переменные в AWK
  2. Числовые выражения в AWK
  3. Операторы присваивания в AWK
  4. Выводы

Переменные в AWK

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

 

Покажем Вам несколько примеров:

 

Для присваивания значения переменной в AWK используется оператор =. К примеру, запишем в переменную var первое поле каждой строки из файла students.txt и выведем ее значение на экран:

 

variable awk

У Вас есть возможность присвоить значение переменной из стандартного вывода, используя конвейер. Например, выполним команду uname для вывода информации о системе, а затем с помощью awk извлечем второе поле (имя хоста) и сохраним его в переменной var:

 

uname var

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

  • uname -a — команда, которая выводит информацию о системе;
  • | — конвейер, передающий вывода команды слева как ввод команды справа;
  • '{var=$2 ; print var;}' — присваивает значение второго поля ($2) переменной var и выводит его на экран с помощью команды print.

Числовые выражения в AWK

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

  • + — сложение;
  • - — вычитание;
  • * — умножение;
  • / — деление;
  • % — остаток от деления.

Числовые выражения могут использоваться для подсчета количества строк в файле, вычисление суммы чисел и т.д.

Например, нам нужно вычислить среднее значение чисел второго поля всех строк в файле. Для решения этой задачи выполним приведенную ниже команду:

 

num-expr awk

Данный код работает следующим образом:

  1. Для каждой строки язык сценариев добавляет значение из второго столбца к переменной sum и увеличивает счетчик count на 1.
  2. По достижении конца файла AWK выполняет блок кода END, который вычисляет среднее значение как сумму всех чисел (sum) во втором столбце, разделенную на количество строк (count).
  3. Результат направляется в стандартный вывод с помощью оператора print.

Операторы присваивания в AWK

Операторы присваивания хранят значение в объекте, заданном левым операндом. В AWK существует несколько операторов присваивания:

  • = — присваивает значение переменной;
  • += — увеличивает значение переменной на заданное число;
  • -= — уменьшает значение переменной на заданное число;
  • *= — умножает значение первого операнда на значение второго операнда;
  • /= — делит значение первого операнда на значение второго операнда.

Для примера выведем на экран сумму всех чисел второго столбца файла students.txt:

 

assign-oper-1 awk

Также с помощью операторов присваивания можно изменять значения полей файла. Допустим, нам нужно увеличить число во втором поле каждой строки на 1 и сохранить изменения в новый файл:

 

assign-oper-2
Данный код использует оператор присваивания += для увеличения значения второго поля каждой строки файла на 1. Затем он выводит измененные строки на экран с помощью команды print и перенаправляет результат в новый файл students_new.txt.

Выводы

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


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

Свежие комментарии

Меню