Giunsa Paggamit ang mga Pamahayag sa Pagkontrol sa Pag-agos sa Awk - Bahin 12


Kung imong girepaso ang tanan nga mga pananglitan sa Awk nga among nasakup hangtod karon, gikan pa sa pagsugod sa mga operasyon sa pagsala sa teksto base sa pipila ka mga kondisyon, kana kung diin ang pamaagi sa mga pahayag sa pagkontrol sa dagan gitakda.

Adunay lainlaing mga pahayag sa pagkontrol sa dagan sa Awk programming ug kini naglakip sa:

  1. kon-lain nga pahayag
  2. para sa pahayag
  3. samtang pahayag
  4. pagbuhat-samtang pahayag
  5. break nga pahayag
  6. padayon nga pahayag
  7. sunod nga pahayag
  8. sunod nga file nga pahayag
  9. exit statement

Apan, alang sa kasangkaran niini nga serye, atong isaysay ang: if-else, for, while ug do while mga pahayag. Hinumdomi nga naagian na nato ang serye sa Awk.

1. Ang kon-lain nga Pahayag

Ang gipaabot nga syntax sa kon pahayag susama nianang sa shell kon pahayag:

if  (condition1) {
     actions1
}
else {
      actions2
}

Sa ibabaw nga syntax, ang condition1 ug condition2 kay Awk expressions, ug actions1 ug actions2 kay Awk commands nga gipatuman sa dihang ang ang tagsa-tagsa nga mga kondisyon natagbaw.

Kung matagbaw ang kondisyon1, nagpasabut nga kini tinuod, dayon ang aksyon1 ipatuman ug ang kung ang pahayag mogawas, kung dili ang aksyon2 ipatuman.

Ang if nga pamahayag mahimo usab nga mapalapad ngadto sa if-else_if-else nga pahayag sama sa ubos:

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

Alang sa porma sa ibabaw, kung ang kondisyon1 tinuod, ang aksyon1 gipatuman ug ang kung ang pahayag mogawas, kung dili ang kondisyon2 gisusi ug kung kini tinuod, ang aksyon2 gipatuman ug ang kung ang pahayag mogawas. Bisan pa, kung ang kondisyon2 dili tinuod, ang aksyon3 ipatuman ug ang kung pahayag mogawas.

Ania ang usa ka kaso sa punto sa paggamit kon mga pahayag, kita adunay usa ka listahan sa mga tiggamit ug sa ilang mga edad nga gitipigan sa file, users.txt.

Gusto namon nga mag-imprinta og usa ka pahayag nga nagpaila sa ngalan sa usa ka tiggamit ug kung ang edad sa tiggamit ubos o labaw pa sa 25 ka tuig ang edad.

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

Mahimo kaming magsulat og usa ka mubo nga script sa kabhang aron mahimo ang among trabaho sa ibabaw, ania ang sulud sa script:

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

Dayon i-save ang file ug exit, himoa nga executable ang script ug ipadagan kini sama sa mosunod:

$ 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. Ang para sa Pahayag

Kung gusto nimo nga ipatuman ang pipila ka mga Awk nga mga mando sa usa ka loop, nan ang para sa pahayag nagtanyag kanimo usa ka angay nga paagi aron mahimo kana, nga adunay syntax sa ubos:

Dinhi, ang pamaagi gihubit lamang pinaagi sa paggamit sa usa ka counter aron makontrol ang pagpatuman sa loop, una kinahanglan nimo nga i-initialize ang counter, dayon ipadagan kini batok sa usa ka kondisyon sa pagsulay, kung kini tinuod, ipatuman ang mga aksyon ug sa katapusan dugangan ang counter. Ang loop matapos kung ang counter dili makatagbaw sa kondisyon.

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

Ang mosunud nga Awk nga mando nagpakita kung giunsa ang para sa pahayag molihok, diin gusto namon i-print ang mga numero 0-10:

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

3. Ang samtang nga Pahayag

Ang naandan nga syntax sa while nga pahayag mao ang mosunod:

while ( condition ) {
          actions
}

Ang kondisyon usa ka ekspresyon sa Awk ug ang mga aksyon mao ang mga linya sa mga sugo sa Awk nga gipatuman kung tinuod ang kondisyon.

Sa ubos usa ka script aron ihulagway ang paggamit sa while nga pahayag sa pag-imprinta sa mga numero 0-10:

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

I-save ang file ug himoa nga executable ang script, dayon padagana kini:

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

4. Ang do while nga Pahayag

Kini usa ka pagbag-o sa while nga pahayag sa ibabaw, nga adunay mga musunud nga syntax:

do {
     actions
}
 while (condition) 

Ang gamay nga kalainan mao nga, sa ilalum sa pagbuhat samtang, ang mga Awk nga mga mando gipatuman sa wala pa masusi ang kondisyon. Gamit ang mismong pananglitan ubos sa while statement sa ibabaw, mahimo natong iilustrar ang paggamit sa do while pinaagi sa pag-usab sa Awk command sa test.sh script sama sa mosunod:

#!/bin/bash

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

Human sa pag-usab sa script, i-save ang file ug exit. Dayon himoa ang script nga executable ug ipatuman kini sama sa mosunod:

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

Konklusyon

Dili kini usa ka komprehensibo nga giya bahin sa mga pahayag sa pagkontrol sa dagan sa Awk, sama sa akong nahisgutan sa sayo pa, adunay daghang uban pang mga pahayag sa pagkontrol sa dagan sa Awk.

Bisan pa, kini nga bahin sa serye sa Awk kinahanglan maghatag kanimo usa ka tin-aw nga sukaranan nga ideya kung giunsa ang pagpatuman sa mga mando sa Awk makontrol base sa pipila nga mga kondisyon.

Mahimo usab nimo nga ipasabut ang labi pa sa nahabilin nga mga pahayag sa pagkontrol sa dagan aron makakuha dugang nga pagsabut sa hilisgutan. Sa katapusan, sa sunod nga seksyon sa serye sa Awk, mobalhin kami sa pagsulat sa mga script sa Awk.