Yadda Ake Amfani da Maganganun Kula da Yawa a cikin Awk - Kashi na 12


Lokacin da kuka yi bitar duk misalan Awk da muka kawo ya zuwa yanzu, tun daga farkon ayyukan tace rubutu bisa wasu sharuɗɗa, shi ne inda tsarin bayanan kula da kwarara ya shiga.

Akwai maganganun sarrafa kwarara iri-iri a cikin shirye-shiryen Awk kuma waɗannan sun haɗa da:

  1. magana idan ba haka ba
  2. don sanarwa
  3. a lokacin sanarwa
  4. bayani-yi-lokaci
  5. karya sanarwa
  6. ci gaba da sanarwa
  7. bayani na gaba
  8. bayani na gaba
  9. maganar fita

Koyaya, don iyakar wannan jerin, za mu bayyana akan: idan-lalle, don , yayin da da yi yayin da kalamai. Ka tuna cewa mun riga mun yi tafiya cikin jerin Awk.

1. Maganar in ba haka ba

Haɗin da ake tsammanin na idan sanarwa yayi kama da na harsashi idan sanarwa:

if  (condition1) {
     actions1
}
else {
      actions2
}

A cikin mahallin da ke sama, condition1 da condition2 sune maganganun Awk, kuma actions1 da actions2 ana aiwatar da umarnin Awk lokacin da An gamsu da kowane yanayi.

Lokacin da yanayin 1 ya cika, ma'ana gaskiya ne, sannan a aiwatar da ayyuka1 kuma idan bayanin ya fita, in ba haka ba ana aiwatar da ayyuka2.

Hakanan za'a iya faɗaɗa bayanin idan zuwa bayanin if-else_if-lese kamar yadda yake ƙasa:

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

Domin fom ɗin da ke sama, idan yanayin1 gaskiya ne, to ana aiwatar da ayyuka1 kuma idan bayanin ya fita, in ba haka ba ana kimanta yanayin2 kuma idan gaskiya ne, ana aiwatar da ayyuka2 kuma idan bayanin ya fita. Koyaya, lokacin da sharaɗi2 karya ne, ana aiwatar da ayyuka3 kuma idan bayanin ya fita.

Anan akwai batun yin amfani da idan bayanan, muna da jerin masu amfani da shekarun su da aka adana a cikin fayil ɗin, masu amfani.txt.

Muna son buga bayanin da ke nuna sunan mai amfani da ko shekarun mai amfani bai wuce shekara 25 ko sama da haka ba.

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

Za mu iya rubuta ɗan gajeren rubutun harsashi don aiwatar da aikinmu a sama, ga abin da ke cikin rubutun:

#!/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

Sa'an nan kuma ajiye fayil ɗin kuma fita, sa rubutun ya zama mai aiwatarwa kuma gudanar da shi kamar haka:

$ 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

Idan kuna son aiwatar da wasu umarni na Awk a cikin madauki, to bayanin yana ba ku hanyar da ta dace don yin hakan, tare da rubutun da ke ƙasa:

Anan, ana bayyana hanyar kawai ta hanyar amfani da ƙira don sarrafa aiwatar da madauki, da farko kuna buƙatar fara ƙima, sannan ku gudanar da shi a kan yanayin gwaji, idan gaskiya ne, aiwatar da ayyukan kuma a ƙarshe ƙara ƙima. Madauki yana ƙare lokacin da counter ɗin bai gamsar da yanayin ba.

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

Umurnin Awk mai zuwa yana nuna yadda bayanin ke aiki, inda muke son buga lambobin 0-10:

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

3. Bayanin Lokacin

Ma'anar jumla ta al'ada na bayanin lokacin shine kamar haka:

while ( condition ) {
          actions
}

Yanayin magana ne Awk kuma ayyuka sune layin umarni Awk da aka aiwatar lokacin da yanayin gaskiya ne.

A ƙasa akwai rubutun don kwatanta amfani da lokacin sanarwa don buga lambobi 0-10:

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

Ajiye fayil ɗin kuma sanya rubutun aiwatarwa, sannan gudanar da shi:

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

4. A yi yayin Magana

Canji ne na bayanin lokacin da ke sama, tare da maƙasudi mai zuwa:

do {
     actions
}
 while (condition) 

Bambanci kaɗan shine, a ƙarƙashin yin yayin, ana aiwatar da umarnin Awk kafin a kimanta yanayin. Yin amfani da ainihin misalin da ke ƙarƙashin bayanin da ke sama, za mu iya misalta amfani da yin yayin da canza umarnin Awk a cikin rubutun test.sh kamar haka:

#!/bin/bash

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

Bayan gyara rubutun, ajiye fayil ɗin kuma fita. Sannan ku sanya rubutun ya zama mai aiwatarwa kuma ku aiwatar da shi kamar haka:

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

Kammalawa

Wannan ba cikakken jagora bane game da maganganun sarrafa kwararar Awk, kamar yadda na ambata a baya akan, akwai wasu maganganun sarrafa kwarara da yawa a cikin Awk.

Duk da haka, wannan ɓangaren jerin Awk ya kamata ya ba ku cikakkiyar ra'ayi na yadda za a iya sarrafa aiwatar da umarnin Awk bisa wasu sharuɗɗa.

Hakanan zaka iya yin ƙarin bayani akan sauran maganganun sarrafa kwarara don samun ƙarin fahimta akan batun. A ƙarshe, a cikin sashe na gaba na jerin Awk, za mu matsa zuwa rubuta rubutun Awk.