Jak używać operatorów porównania w Awk w systemie Linux — część 4
Kiedy mamy do czynienia z wartościami liczbowymi lub ciągami tekstowymi w wierszu tekstu, filtrowanie tekstu lub ciągów za pomocą operatorów porównania przydaje się użytkownikom poleceń Awk.
W tej części serii Awk przyjrzymy się, jak można filtrować tekst lub ciągi znaków za pomocą operatorów porównania. Jeśli jesteś programistą, musisz już znać operatory porównania, ale te, które nie są, pozwól, że wyjaśnię to w poniższej sekcji.
Czym są operatory porównania w Awk?
Operatory porównania w Awk służą do porównywania wartości liczb lub ciągów znaków i obejmują one:
>
– większy niż<
– mniej niż>=
– większy lub równy<=
– mniejszy lub równy==
– równe!=
– nie jest równyjakaś_wartość ~/wzór/
– prawda, jeśli jakaś_wartość pasuje do wzorcajakaś_wartość !~/wzór/
– prawda, jeśli jakaś_wartość nie pasuje do wzorca
Teraz, gdy przyjrzeliśmy się różnym operatorom porównania w Awk, zrozumiemy je lepiej na przykładzie.
W tym przykładzie mamy plik o nazwie food_list.txt, który jest listą zakupów różnych produktów spożywczych i chciałbym oznaczyć produkty spożywcze, których ilość jest mniejsza lub równa 20, dodając ( **)
na końcu każdej linii.
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
Ogólna składnia używania operatorów porównania w Awk jest następująca:
expression { actions; }
Aby osiągnąć powyższy cel, będę musiał uruchomić poniższe polecenie:
# 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 **
W powyższym przykładzie mają miejsce dwie ważne rzeczy:
- Pierwsze wyrażenie { akcja ; kombinacja, 3 $<= 30 { printf „%s\t%s\n”, $0,”**” ; wypisuje wiersze o liczbie mniejszej lub równej 30 i dodaje (**) na końcu każdego wiersza. Dostęp do wartości ilości uzyskuje się za pomocą zmiennej pola $3.
- Drugie wyrażenie { akcja ; kombinacja, $3 > 30 { print $0 ; wypisuje linie bez zmian, ponieważ ich ilość jest większa niż 30.
Jeszcze jeden przykład:
# 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
W tym przykładzie chcemy wskazać linie o ilości mniejszej lub równej 20 słowem (TRUE) na końcu.
Streszczenie
To jest tutorial wprowadzający do operatorów porównań w Awk, dlatego musisz wypróbować wiele innych opcji i dowiedzieć się więcej.
W przypadku jakichkolwiek problemów, które napotkasz lub jakichkolwiek dodatków, które masz na myśli, zostaw komentarz w sekcji komentarzy poniżej. Pamiętaj o przeczytaniu kolejnej części serii Awk, w której przeprowadzę Cię przez wyrażenia złożone.