Jinsi ya Kutumia Viendeshaji Kulinganisha na Awk kwenye Linux - Sehemu ya 4


Wakati wa kushughulika na thamani za nambari au mfuatano katika mstari wa maandishi, kuchuja maandishi au mifuatano kwa kutumia viendeshaji ulinganisho huja kwa manufaa kwa watumiaji wa amri ya Awk.

Katika sehemu hii ya mfululizo wa Awk, tutaangalia jinsi unavyoweza kuchuja maandishi au mifuatano kwa kutumia waendeshaji kulinganisha. Ikiwa wewe ni mtayarishaji programu basi lazima uwe tayari kuwafahamu waendeshaji kulinganisha lakini wale ambao hawajui, wacha nielezee katika sehemu iliyo hapa chini.

Waendeshaji kulinganisha katika Awk hutumiwa kulinganisha thamani ya nambari au mifuatano na inajumuisha yafuatayo:

  1. > - kubwa kuliko
  2. - chini ya
  3. >= - kubwa kuliko au sawa na
  4. <= - chini ya au sawa na
  5. == - sawa na
  6. != - si sawa na
  7. thamani_fulani ~/pattern/ - kweli ikiwa thamani_inalingana na muundo
  8. thamani_fulani !~/pattern/ - kweli ikiwa thamani_fulani hailingani na mchoro

Sasa kwa kuwa tumeangalia waendeshaji mbalimbali wa kulinganisha katika Awk, wacha tuwaelewe vyema kwa kutumia mfano.

Katika mfano huu, tuna faili iitwayo food_list.txt ambayo ni orodha ya ununuzi wa bidhaa mbalimbali za vyakula na ningependa kuripoti vyakula ambavyo wingi wake ni chini ya au sawa na 20 kwa kuongeza (**) mwisho wa kila mstari.

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

Syntax ya jumla ya kutumia waendeshaji kulinganisha katika Awk ni:

# expression { actions; }

Ili kufikia lengo hapo juu, nitalazimika kutekeleza amri hapa chini:

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

Katika mfano hapo juu, kuna mambo mawili muhimu yanayotokea:

  1. Neno la kwanza { kitendo ; } mchanganyiko, $3 <= 30 { printf “%s\t%s\n”, $0,”**” ; } huchapisha mistari yenye kiasi chini ya au sawa na 30 na kuongeza (**) mwishoni mwa kila mstari. Thamani ya kiasi inafikiwa kwa kutumia utofauti wa uga $3.
  2. Neno la pili { kitendo ; } mchanganyiko, $3 > 30 {print $0 ;} huchapisha mistari bila kubadilika kwa kuwa idadi yake ni kubwa kuliko 30.

Mfano mmoja zaidi:

# 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

Katika mfano huu, tunataka kuonyesha mistari yenye kiasi kidogo au sawa na 20 na neno (TRUE) mwishoni.

Muhtasari

Haya ni mafunzo ya utangulizi ya kulinganisha waendeshaji katika Awk, kwa hivyo unahitaji kujaribu chaguo zingine nyingi na kugundua zaidi.

Iwapo kuna matatizo yoyote unayokumbana nayo au nyongeza yoyote unayofikiria, basi toa maoni katika sehemu ya maoni hapa chini. Kumbuka kusoma sehemu inayofuata ya safu ya Awk ambapo nitakupitisha kupitia usemi ambatani.