Kako koristiti složene izraze s Awk u Linuxu - 5. dio
Sve vreme smo gledali jednostavne izraze kada smo proveravali da li je uslov ispunjen ili ne. Što ako želite koristiti više od jednog izraza za provjeru određenog stanja?
U ovom članku ćemo pogledati kako možete kombinirati više izraza koji se nazivaju složeni izrazi da biste provjerili da li postoji uslov prilikom filtriranja teksta ili nizova.
U Awk, složeni izrazi se grade pomoću &&
koji se naziva (and)
i | |
koji se naziva (ili)
složeni operatori.
Opća sintaksa za složene izraze je:
( first_expression ) && ( second_expression )
Ovdje, first_expression
i second_expression
moraju biti istiniti da bi cijeli izraz bio istinit.
( first_expression ) || ( second_expression)
Ovdje jedan od izraza ili prvi_izraz
ili drugi_izraz
mora biti istinit da bi cijeli izraz bio istinit.
Oprez: Ne zaboravite uvijek uključiti zagrade.
Izrazi se mogu izgraditi pomoću operatora poređenja koje smo pogledali u 4. dijelu serije awk.
Hajde da sada dobijemo jasno razumevanje koristeći primer u nastavku:
U ovom primjeru, a imaju tekstualnu datoteku pod nazivom tecmint_deals.txt
, koja sadrži listu nekih nevjerovatnih nasumičnih Tecmint ponuda, uključuje naziv ponude, cijenu i vrstu.
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
Recimo da želimo samo ponude za štampanje i označavanje koje su iznad $20 i tipa “Tech ” koristeći znak (**)
na kraju svakog reda.
Moraćemo da pokrenemo naredbu ispod.
# 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 *
U ovom primjeru koristili smo dva izraza u složenom izrazu:
- Prvi izraz, ($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/) ; provjerava redove s ponudama s cijenom iznad $20, i to je tačno samo ako vrijednost od $3, što je cijena, odgovara uzorku /^\$[ 2-9][0-9]*\.[0-9][0-9]$/
- I drugi izraz, ($4 == “Tehnika”) ; provjerava da li je posao tipa “Tech ” i istinit je samo ako je vrijednost od $4 jednaka “Tech ”.
Zapamtite, linija će biti označena samo sa (**)
, ako su prvi izraz i drugi izraz istiniti kao što navodi princip &&
operator.
Sažetak
Neki uvjeti uvijek zahtijevaju pravljenje složenih izraza kako biste odgovarali tačno onome što želite. Kada shvatite upotrebu operatora poređenja i složenog izraza, filtriranje teksta ili nizova na osnovu nekih teških uslova će postati lako.
Nadamo se da će vam ovaj vodič biti koristan i za bilo kakva pitanja ili dodatke, uvijek ne zaboravite ostaviti komentar i vaša zabrinutost će biti riješena u skladu s tim.