Jinsi ya Kutumia Taarifa za Udhibiti wa Mtiririko katika Awk - Sehemu ya 12


Unapokagua mifano yote ya Awk ambayo tumeshughulikia kufikia sasa, tangu mwanzo wa utendakazi wa kuchuja maandishi kulingana na hali fulani, hapo ndipo mbinu ya taarifa za udhibiti wa mtiririko inapoanzishwa.

Kuna taarifa mbalimbali za udhibiti wa mtiririko katika programu ya Awk na hizi ni pamoja na:

  1. kama-taarifa ingine
  2. kwa taarifa
  3. wakati taarifa
  4. kauli ya fanya-wakati
  5. taarifa ya kuvunja
  6. endelea taarifa
  7. taarifa inayofuata
  8. taarifa inayofuata
  9. toka taarifa

Hata hivyo, kwa upeo wa mfululizo huu, tutafafanua kuhusu: if-else, kwa, wakati na fanya wakati kanuni> taarifa. Kumbuka kwamba tayari tumepitia mfululizo wa Awk.

1. Taarifa kama-mwingine

Sintaksia inayotarajiwa ya if statement ni sawa na ile ya ganda ikiwa taarifa:

if  (condition1) {
     actions1
}
else {
      actions2
}

Katika sintaksia iliyo hapo juu, condition1 na condition2 ni maneno ya Awk, na action1 na actions2 ni amri za Awk zinazotekelezwa wakati masharti husika yanatimizwa.

Hali1 inaporidhika, ikimaanisha kuwa ni kweli, basi vitendo1 hutekelezwa na ikiwa taarifa itatoka, vinginevyo vitendo2 vitatekelezwa.

Taarifa if pia inaweza kupanuliwa hadi if-else_if-else taarifa kama ilivyo hapo chini:

if (condition1){
     actions1
}
else if (conditions2){
      actions2
}
else{
     actions3
}

Kwa fomu iliyo hapo juu, ikiwa sharti1 ni kweli, basi vitendo1 hutekelezwa na ikiwa taarifa itatoka, vinginevyo sharti2 linatathminiwa na ikiwa ni kweli, basi vitendo2 hutekelezwa na taarifa ikiwa itatoka. Walakini, wakati condition2 ni ya uwongo, vitendo3 hutekelezwa na taarifa ya if hutoka.

Hapa kuna mfano wa kutumia kama taarifa, tuna orodha ya watumiaji na umri wao iliyohifadhiwa kwenye faili, users.txt.

Tunataka kuchapisha taarifa inayoonyesha jina la mtumiaji na kama umri wa mtumiaji ni mdogo au zaidi ya miaka 25.

[email  ~ $ cat users.txt
Sarah L			35    	F
Aaron Kili		40    	M
John  Doo		20    	M
Kili  Seth		49    	M    

Tunaweza kuandika hati fupi ya ganda ili kutekeleza kazi yetu hapo juu, haya ndio yaliyomo kwenye hati:

#!/bin/bash
awk ' { 
        if ( $3 <= 25 ){
           print "User",$1,$2,"is less than 25 years old." ;
        }
        else {
           print "User",$1,$2,"is more than 25 years old" ; 
}
}'    ~/users.txt

Kisha uhifadhi faili na utoke, fanya hati itekelezwe na uiendeshe kama ifuatavyo:

$ chmod +x test.sh
$ ./test.sh
User Sarah L is more than 25 years old
User Aaron Kili is more than 25 years old
User John Doo is less than 25 years old.
User Kili Seth is more than 25 years old

2. The for Statement

Iwapo unataka kutekeleza amri kadhaa za Awk kwa kitanzi, basi kwa taarifa inakupa njia inayofaa ya kufanya hivyo, na syntax hapa chini:

Hapa, mbinu hiyo inafafanuliwa tu na matumizi ya counter ili kudhibiti utekelezaji wa kitanzi, kwanza unahitaji kuanzisha counter, kisha kukimbia dhidi ya hali ya mtihani, ikiwa ni kweli, fanya vitendo na hatimaye uongeze counter. Kitanzi huisha wakati kihesabu hakikidhi hali.

for ( counter-initialization; test-condition; counter-increment ){
      actions
}

Amri ifuatayo ya Awk inaonyesha jinsi taarifa inavyofanya kazi, ambapo tunataka kuchapisha nambari 0-10:

$ awk 'BEGIN{ for(counter=0;counter<=10;counter++){ print counter} }'
0
1
2
3
4
5
6
7
8
9
10

3. Taarifa ya wakati

Sintaksia ya kawaida ya taarifa ya wakati ni kama ifuatavyo:

while ( condition ) {
          actions
}

Hali ni usemi wa Awk na vitendo ni safu za amri za Awk zinazotekelezwa wakati hali ni kweli.

Hapo chini kuna maandishi ya kuonyesha utumiaji wa taarifa ya wakati kuchapisha nambari 0-10:

#!/bin/bash
awk ' BEGIN{ counter=0 ;
         
        while(counter<=10){
              print counter;
              counter+=1 ;
             
}
}  

Hifadhi faili na ufanye hati itekelezwe, kisha iendeshe:

$ chmod +x test.sh
$ ./test.sh
0
1
2
3
4
5
6
7
8
9
10

4. Taarifa ya kufanya wakati

Ni marekebisho ya taarifa ya wakati hapo juu, na syntax ifuatayo ya msingi:

do {
     actions
}
 while (condition) 

Tofauti kidogo ni kwamba, chini ya muda, amri za Awk hutekelezwa kabla ya hali hiyo kutathminiwa. Kwa kutumia mfano huo chini ya wakati taarifa hapo juu, tunaweza kuonyesha matumizi ya do while kwa kubadilisha amri ya Awk kwenye hati ya test.sh kama ifuatavyo:

#!/bin/bash

awk ' BEGIN{ counter=0 ;  
        do{
            print counter;  
            counter+=1 ;    
        }
        while (counter<=10)   
} 
'

Baada ya kurekebisha hati, hifadhi faili na uondoke. Kisha fanya hati itekelezwe na utekeleze kama ifuatavyo:

$ chmod +x test.sh
$ ./test.sh
0
1
2
3
4
5
6
7
8
9
10

Hitimisho

Huu sio mwongozo kamili kuhusu taarifa za udhibiti wa mtiririko wa Awk, kama nilivyosema hapo awali, kuna taarifa zingine kadhaa za udhibiti wa mtiririko katika Awk.

Walakini, sehemu hii ya safu ya Awk inapaswa kukupa wazo wazi la kimsingi la jinsi utekelezaji wa amri za Awk unaweza kudhibitiwa kulingana na hali fulani.

Unaweza pia kueleza zaidi juu ya taarifa zingine za udhibiti wa mtiririko ili kupata uelewa zaidi juu ya mada. Hatimaye, katika sehemu inayofuata ya mfululizo wa Awk, tutahamia katika kuandika hati za Awk.