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:
>
- kubwa kuliko- chini ya
>=
- kubwa kuliko au sawa na<=
- chini ya au sawa na==
- sawa na!=
- si sawa nathamani_fulani ~/pattern/
- kweli ikiwa thamani_inalingana na muundothamani_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:
- 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.
- 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.