Jak používat porovnávací operátory s Awk v Linuxu – část 4
Při práci s číselnými nebo řetězcovými hodnotami v řádku textu se uživatelům příkazu Awk hodí filtrování textu nebo řetězců pomocí porovnávacích operátorů.
V této části série Awk se podíváme na to, jak můžete filtrovat text nebo řetězce pomocí porovnávacích operátorů. Pokud jste programátor, musíte být obeznámeni s operátory porovnávání, ale ti, kteří ne, mi dovolte vysvětlit v části níže.
Co jsou porovnávací operátory v Awk?
Porovnávací operátory v Awk se používají k porovnání hodnoty čísel nebo řetězců a zahrnují následující:
>
– větší než<
– méně než>=
– větší nebo rovno<=
– menší nebo rovno==
– rovno!=
– nerovná sesome_value ~/pattern/
– true, pokud se nějaká_hodnota shoduje se vzoremsome_value !~/pattern/
– true, pokud některá_hodnota neodpovídá vzoru
Nyní, když jsme se podívali na různé operátory porovnání v Awk, pojďme jim lépe porozumět na příkladu.
V tomto příkladu máme soubor s názvem food_list.txt, což je nákupní seznam pro různé potraviny, a já bych chtěl označit potraviny, jejichž množství je menší nebo rovno 20 přidáním ( **)
na konci každého řádku.
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
Obecná syntaxe pro použití operátorů porovnání v Awk je:
expression { actions; }
Abych dosáhl výše uvedeného cíle, budu muset spustit následující příkaz:
# 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 **
Ve výše uvedeném příkladu se stanou dvě důležité věci:
- První výraz { akce ; } kombinace, 3 $<= 30 { printf “%s\t%s\n”, $0,”**” ; } vytiskne řádky s počtem menším než nebo rovným 30 a na konec každého řádku přidá (**). K hodnotě množství se přistupuje pomocí proměnné pole 3 $.
- Druhý výraz { akce ; } kombinace, 3 $> 30 { tisk $0 ;} vytiskne řádky beze změny, protože jejich množství je větší než 30.
Ještě jeden příklad:
# 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
V tomto příkladu chceme označit řádky s množstvím menším nebo rovným 20 se slovem (TRUE) na konci.
souhrn
Toto je úvodní návod pro operátory porovnávání v Awk, proto musíte vyzkoušet mnoho dalších možností a objevit další.
V případě jakýchkoli problémů, kterým čelíte, nebo jakýchkoli dodatků, které máte na mysli, napište komentář do sekce komentářů níže. Nezapomeňte si přečíst další díl série Awk, kde vás provedu složenými výrazy.