Как использовать составные выражения в AWK

Как использовать составные выражения в AWK

Рубрики:

Linux, Терминал Linux

Метки:

,

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

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

Содержание:

  1. Логические операторы в составных выражениях
  2. Использование оператора &&
  3. Использование оператора ||
  4. Составные выражения с несколькими логическими операторами в AWK
  5. Выводы

Логические операторы в составных выражениях

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

  • && (логическое «И») — возвращает истинное значение только тогда, когда оба операнда истинны;
  • || (логическое «ИЛИ») — возвращает истинное значение, если хотя бы один операнд истинен;
  • ! (логическое «НЕ») — инвертирует значение операнда (если операнд был истинен, то станет ложным, и наоборот).

Также для построения составных выражений могут быть использованы операторы сравнения, которые мы рассмотрели в предыдущей статье курса (Операторы сравнения в AWK). Продемонстрируем несколько примеров применения логических операторов в ОС Linux.

Использование оператора &&

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

 

cat file

Для примера выведем строки из файла, где количество сделанных работ (второе поле) больше 20, а оценка (третье поле) равна A. Используем для этого следующую команду:

 

logic and awk

Разберем более подробно синтаксис:

  • $2 > 20 — выражение проверяет, больше ли 20 значение второго столбца;
  • && — логический оператор «И», который связывает два условия;
  • $3 == "A" — выражение проверяет, равно ли A значение третьего столбца ;
  • {print $0} — действие, которое производится над строками, удовлетворяющими обоим условиям, и выводит их на экран.

Использование оператора ||

В AWK логическое «ИЛИ» обозначается символами ||. Этот оператор возвращает истинное значение (1) в случае, если хотя бы один из операндов является истинным, и ложное значение (0) в противном случае. Допустим, нам нужно вывести строки из файла students.txt, где второе поле каждой строки меньше 20 или третье поле равно A. Для этого напишем в терминале следующее составное выражение:

 

logic or awk

Составные выражения с несколькими логическими операторами в AWK

Вы можете строить составные выражения с несколькими логическими операторами, такими как && и  ||, для создания более сложных фильтров и условий. Что позволяет выбирать строки, удовлетворяющие более чем одному критерию, а также создавать более сложные выводы на основе соответствующих строк. Например:

 

combine operators

Этот код на языке AWK используется для фильтрации строк из файла students.txt, где значение второго поля больше 20 и значение третьего поля равно A или B. Опишем подробно каждую часть выражения:

  • $2 > 20 — проверяет, больше ли 20 значение второго поля;
  • && — логический оператор, который связывает два условия, требуя, чтобы оба были истинными;
  • $3 == "A" — проверяет, равно ли A значение третьего поля;
  • $3 == "B" — проверяет, равно ли B значение третьего поля;
  • || — логический оператор, который связывает два условия, требуя, чтобы одно из них было истинным.
  • {print $0} — если оба условия выполняются, то вся строка выводится на экран.

Таким образом, код выведет все строки, где возраст больше 20 и оценка равна A или B.

Выводы

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


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

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

Меню