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:

  1. > – akbar minn
  2. – inqas minn
  3. >= – akbar minn jew ugwali għal
  4. – inqas minn jew ugwali għal
  5. == – ugwali għal
  6. != – mhux ugwali għal
  7. some_value ~/pattern/ – veru jekk some_value jaqbel mal-mudell
  8. some_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:

  1. 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.
  2. 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.