Как использовать составные выражения с 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 *
В этом примере мы использовали два выражения в составном выражении:
- Первое выражение, ($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/) ; проверяет строки со сделками с ценой выше 20 долларов США, и это верно только в том случае, если значение $3, которое является ценой, соответствует шаблону /^\$[ 2-9][0-9]*\.[0-9][0-9]$/
- И второе выражение, ($4 == «Tech») ; проверяет, относится ли сделка к типу «Тех», и это верно только в том случае, если значение $4 равно «Тех».
Помните, что строка будет помечена тегом (**)
только в том случае, если первое выражение и второе выражение верны, как гласит принцип Оператор &&
.
Краткое содержание
Некоторые условия всегда требуют построения составных выражений, чтобы они точно соответствовали тому, что вы хотите. Когда вы поймете, как использовать операторы сравнения и составных выражений, фильтрация текста или строк на основе некоторых сложных условий станет простой.
Надеюсь, вы найдете это руководство полезным, и если у вас возникнут вопросы или дополнения, всегда не забывайте оставлять комментарии, и ваша проблема будет решена соответствующим образом.