Kif tuża Operaturi ta' Tqabbil b'Awk fil-Linux - Parti 4
Meta tittratta valuri numeriċi jew string f'linja ta 'test, l-iffiltrar ta' test jew strings bl-użu ta 'operaturi ta' paragun ikun utli għall-utenti tal-kmand Awk.
F'din il-parti tas-serje Awk, se nagħtu ħarsa lejn kif tista' tiffiltra test jew kordi billi tuża operaturi ta' tqabbil. Jekk inti programmatur allura trid tkun diġà familjari ma 'operaturi ta' tqabbil iżda dawk li mhumiex, ħalluni nispjega fit-taqsima hawn taħt.
L-operaturi tat-tqabbil f'Awk jintużaw biex iqabblu l-valur ta 'numri jew kordi u jinkludu dan li ġej:
>
– akbar minn– inqas minn
>=
– akbar minn jew ugwali għal=
– inqas minn jew ugwali għal==
– ugwali għal!=
– mhux ugwali għalsome_value ~/pattern/
– veru jekk some_value jaqbel mal-mudellsome_value !~/pattern/
– veru jekk some_value ma jaqbilx mal-mudell
Issa li ħares lejn id-diversi operaturi ta 'tqabbil f'Awk, ejjew nifhmuhom aħjar billi tuża eżempju.
F'dan l-eżempju, għandna fajl bl-isem ta' food_list.txt li huwa lista tax-xiri għal oġġetti ta' ikel differenti u nixtieq inmarka oġġetti ta' l-ikel li l-kwantità tagħhom hija inqas minn jew ugwali għal 20 billi żżid (**)
fl-aħħar ta’ kull linja.
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
Is-sintassi ġenerali għall-użu ta' operaturi ta' tqabbil f'Awk hija:
# expression { actions; }
Biex tikseb l-għan ta 'hawn fuq, ser ikolli nmexxi l-kmand hawn taħt:
# 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 **
Fl-eżempju ta 'hawn fuq, hemm żewġ affarijiet importanti li jiġru:
- L-ewwel espressjoni { azzjoni ; } kombinazzjoni, $3 <= 30 { printf “%s %s ”, $0,”**” ; } tipprintja linji bi kwantità inqas minn jew ugwali għal 30 u żżid (**) fl-aħħar ta' kull linja. Il-valur tal-kwantità huwa aċċessat bl-użu ta' $3 field variable.
- It-tieni espressjoni { azzjoni ; } kombinazzjoni, $3 > 30 { print $0 ;} tipprintja linji mhux mibdula peress li l-kwantità tagħhom hija akbar minn 30.
Eżempju ieħor:
# 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
F'dan l-eżempju, irridu nindikaw linji bi kwantità inqas jew ugwali għal 20 bil-kelma (VERU) fl-aħħar.
Sommarju
Dan huwa tutorja introduttorja għall-operaturi ta 'tqabbil f'Awk, għalhekk għandek bżonn tipprova ħafna għażliet oħra u tiskopri aktar.
F'każ ta' xi problemi li tiffaċċja jew xi żidiet li għandek f'moħħok, imbagħad waqqa' kumment fit-taqsima tal-kummenti hawn taħt. Ftakar li taqra l-parti li jmiss tas-serje Awk fejn se nieħdok permezz ta' espressjonijiet komposti.