Поиск по сайту:

Как использовать составные выражения с Awk в Linux. Часть 5


Все это время мы рассматривали простые выражения, проверяя, выполнено ли условие или нет. Что делать, если вы хотите использовать более одного выражения для проверки определенного условия?

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

В Awk составные выражения создаются с использованием &&, называемого (and), и | | называются составными операторами (or).

Общий синтаксис составных выражений:

( first_expression ) && ( second_expression )

Здесь first_expression и Second_expression должны быть истинными, чтобы сделать все выражение истинным.

( first_expression ) || ( second_expression) 

Здесь одно из выражений: first_expression или Second_expression должно быть истинным, чтобы все выражение было истинным.

Внимание. Не забывайте всегда включать круглые скобки.

Выражения можно построить с помощью операторов сравнения, которые мы рассмотрели в части 4 серии статей по awk.

Давайте теперь получим четкое понимание, используя пример ниже:

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

No      Name                                    Price           Type
1       Mac_OS_X_Cleanup_Suite                  $9.99           Software
2       Basics_Notebook                         $14.99          Lifestyle
3       Tactical_Pen                            $25.99          Lifestyle
4       Scapple                                 $19.00          Unknown
5       Nano_Tool_Pack                          $11.99          Unknown
6       Ditto_Bluetooth_Altering_Device         $33.00          Tech
7       Nano_Prowler_Mini_Drone                 $36.99          Tech 

Допустим, мы хотим печатать и отмечать только сделки стоимостью выше 20 долларов США и типа “Tech”, используя знак (**) в конце. каждой строки.

Нам нужно будет запустить команду ниже.

# awk '($3 ~ /^$[2-9][0-9]*\.[0-9][0-9]$/) && ($4=="Tech") { printf "%s\t%s\n",$0,"*"; } ' tecmint_deals.txt 

6	Ditto_Bluetooth_Altering_Device		$33.00		Tech	*
7	Nano_Prowler_Mini_Drone			$36.99          Tech	 *

В этом примере мы использовали два выражения в составном выражении:

  1. Первое выражение, ($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/) ; проверяет строки со сделками с ценой выше 20 долларов США, и это верно только в том случае, если значение $3, которое является ценой, соответствует шаблону /^\$[ 2-9][0-9]*\.[0-9][0-9]$/
  2. И второе выражение, ($4 == «Tech») ; проверяет, относится ли сделка к типу «Тех», и это верно только в том случае, если значение $4 равно «Тех».

Помните, что строка будет помечена тегом (**) только в том случае, если первое выражение и второе выражение верны, как гласит принцип Оператор &&.

Краткое содержание

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

Надеюсь, вы найдете это руководство полезным, и если у вас возникнут вопросы или дополнения, всегда не забывайте оставлять комментарии, и ваша проблема будет решена соответствующим образом.