Как использовать операторы сравнения с Awk в Linux — часть 4
При работе с числовыми или строковыми значениями в строке текста фильтрация текста или строк с помощью операторов сравнения может оказаться полезной для пользователей команд Awk.
В этой части серии статей об Awk мы рассмотрим, как можно фильтровать текст или строки с помощью операторов сравнения. Если вы программист, то вы, должно быть, уже знакомы с операторами сравнения, но если вы не знакомы, позвольте мне объяснить это в разделе ниже.
Что такое операторы сравнения в Awk?
Операторы сравнения в Awk используются для сравнения значений чисел или строк и включают в себя следующее:
>
– больше, чем<
– меньше чем>=
– больше или равно<=
– меньше или равно==
– равно!=
– не равноsome_value ~ /pattern/
– true, если some_value соответствует шаблонуsome_value !~ /pattern/
– true, если some_value не соответствует шаблону
Теперь, когда мы рассмотрели различные операторы сравнения в Awk, давайте лучше разберемся в них на примере.
В этом примере у нас есть файл с именем food_list.txt, который представляет собой список покупок для различных продуктов питания, и я хотел бы пометить продукты, количество которых меньше или равно 20, добавив ( **)
в конце каждой строки.
No Item_Name Quantity Price
1 Mangoes 45 $3.45
2 Apples 25 $2.45
3 Pineapples 5 $4.45
4 Tomatoes 25 $3.45
5 Onions 15 $1.45
6 Bananas 30 $3.45
Общий синтаксис использования операторов сравнения в Awk:
expression { actions; }
Чтобы достичь вышеуказанной цели, мне придется запустить команду ниже:
# awk '$3 <= 30 { printf "%s\t%s\n", $0,"**" ; } $3 > 30 { print $0 ;}' food_list.txt
No Item_Name` Quantity Price
1 Mangoes 45 $3.45
2 Apples 25 $2.45 **
3 Pineapples 5 $4.45 **
4 Tomatoes 25 $3.45 **
5 Onions 15 $1.45 **
6 Bananas 30 $3.45 **
В приведенном выше примере происходят две важные вещи:
- Первое выражение { action ; комбинация, $3 <= 30 { printf “%s\t%s\n”, $0”,**” ; печатает строки с количеством, меньшим или равным 30, и добавляет (**) в конце каждой строки. Доступ к значению количества осуществляется с помощью переменной поля $3.
- Второе выражение { action ; Комбинация, $3 > 30 { print $0 ; печатает строки без изменений, поскольку их количество превышает 30.
Еще один пример:
# awk '$3 <= 20 { printf "%s\t%s\n", $0,"TRUE" ; } $3 > 20 { print $0 ;} ' food_list.txt
No Item_Name Quantity Price
1 Mangoes 45 $3.45
2 Apples 25 $2.45
3 Pineapples 5 $4.45 TRUE
4 Tomatoes 25 $3.45
5 Onions 15 $1.45 TRUE
6 Bananas 30 $3.45
В этом примере мы хотим указать строки с количеством меньше или равным 20 со словом (TRUE) в конце.
Краткое содержание
Это вводное руководство по операторам сравнения в Awk, поэтому вам нужно опробовать множество других вариантов и узнать больше.
Если у вас возникнут какие-либо проблемы или какие-либо дополнения, которые вы имеете в виду, оставьте комментарий в разделе комментариев ниже. Не забудьте прочитать следующую часть серии статей об Awk, где я познакомлю вас с составными выражениями.