Wyszukiwanie w witrynie

Jak używać wyrażeń złożonych w Awk w systemie Linux — część 5


Przez cały czas sprawdzaliśmy, czy warunek został spełniony, czy nie, przyglądaliśmy się prostym wyrażeniom. Co się stanie, jeśli chcesz użyć więcej niż jednego wyrażenia do sprawdzenia określonego warunku?

W tym artykule przyjrzymy się, jak można połączyć wiele wyrażeń zwanych wyrażeniami złożonymi, aby sprawdzić warunek podczas filtrowania tekstu lub ciągów znaków.

W Awk wyrażenia złożone są budowane przy użyciu && określanych jako (i) oraz | | określane jako operatory złożone (lub).

Ogólna składnia wyrażeń złożonych jest następująca:

( first_expression ) && ( second_expression )

Tutaj pierwsze_wyrażenie i drugie_wyrażenie muszą mieć wartość true, aby całe wyrażenie było prawdziwe.

( first_expression ) || ( second_expression) 

W tym przypadku jedno z wyrażeń pierwsze_wyrażenie lub drugie_wyrażenie musi być prawdziwe, aby całe wyrażenie było prawdziwe.

Uwaga: pamiętaj, aby zawsze dołączać nawiasy.

Wyrażenia można budować przy użyciu operatorów porównania, które omówiliśmy w części 4 serii awk.

Uzyskajmy teraz jasne zrozumienie na podstawie poniższego przykładu:

W tym przykładzie mamy plik tekstowy o nazwie tecmint_deals.txt, który zawiera listę niesamowitych losowych ofert Tecmint, zawiera nazwę transakcji, cenę i rodzaj.

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 

Załóżmy, że chcemy drukować i oznaczać tylko oferty o wartości powyżej 20 USD i typu „Tech ”, używając znaku (**) na końcu każdej linii.

Będziemy musieli uruchomić poniższe polecenie.

# 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	 *

W tym przykładzie użyliśmy dwóch wyrażeń w wyrażeniu złożonym:

  1. Pierwsze wyrażenie, ($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/) ; sprawdza linie z transakcjami z ceną powyżej 20 USD i jest to prawdą tylko wtedy, gdy wartość 3 USD, czyli cena, pasuje do wzorca /^\$[ 2-9][0-9]*\.[0-9][0-9]$/
  2. I drugie wyrażenie, ($4 == „Tech”) ; sprawdza, czy transakcja jest typu „Tech ” i jest prawdziwa tylko wtedy, gdy wartość 4 $ jest równa „Tech ”.

Pamiętaj, że linia zostanie oznaczona (**) tylko wtedy, gdy pierwsze wyrażenie i drugie wyrażenie są prawdziwe, zgodnie z zasadą operator &&.

Streszczenie

Niektóre warunki zawsze wymagają zbudowania wyrażeń złożonych, które będą dokładnie odpowiadać oczekiwaniom. Kiedy zrozumiesz użycie operatorów porównania i wyrażeń złożonych, filtrowanie tekstu lub ciągów znaków na podstawie trudnych warunków stanie się łatwe.

Mamy nadzieję, że ten przewodnik okaże się przydatny. W przypadku jakichkolwiek pytań lub uzupełnień zawsze pamiętaj o pozostawieniu komentarza, a Twój problem zostanie odpowiednio rozwiązany.