Hvernig á að nota flæðistýringaryfirlýsingar í Awk - Part 12


Þegar þú skoðar öll Awk dæmin sem við höfum fjallað um hingað til, alveg frá upphafi textasíunaraðgerða á grundvelli sumra skilyrða, þá kemur nálgun flæðistýringaryfirlýsinga inn.

Það eru ýmsar flæðistýringaryfirlýsingar í Awk forritun og þær innihalda:

  1. ef-else yfirlýsing
  2. fyrir yfirlýsingu
  3. meðan yfirlýsing
  4. gera-á meðan yfirlýsing
  5. brotayfirlýsing
  6. halda áfram yfirlýsingu
  7. næsta yfirlýsing
  8. nextfile yfirlýsing
  9. útgönguyfirlýsing

Hins vegar, fyrir umfang þessarar röð, munum við útskýra: ef-else, for, meðan og gera á meðan kóða> yfirlýsingar. Mundu að við höfum þegar gengið í gegnum Awk seríur.

1. Ef-anna yfirlýsingin

Væntanleg setningafræði if setningarinnar er svipuð og í skelinni if setningunni:

if  (condition1) {
     actions1
}
else {
      actions2
}

Í setningafræðinni hér að ofan eru skilyrði1 og skilyrði2 Awk tjáning og actions1 og actions2 eru Awk skipanir sem keyrðar eru þegar viðkomandi skilyrði eru uppfyllt.

Þegar skilyrði1 er uppfyllt, sem þýðir að það er satt, þá er actions1 keyrt og if setningin fer út, annars er actions2 keyrð.

Einnig er hægt að stækka if setninguna í if-else_if-else setningu eins og hér að neðan:

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

Fyrir eyðublaðið hér að ofan, ef skilyrði1 er satt, þá er actions1 keyrt og if setningin hættir, annars er skilyrði2 metið og ef það er satt, þá er actions2 keyrt og if setningin hættir. Hins vegar, þegar skilyrði2 er rangt þá er actions3 keyrt og if setningin hættir.

Hér er dæmi um að nota if yfirlýsingar, við höfum lista yfir notendur og aldur þeirra geymd í skránni, users.txt.

Við viljum prenta yfirlýsingu sem gefur til kynna nafn notanda og hvort aldur notandans sé yngri eða eldri en 25 ára.

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

Við getum skrifað stutt skeljahandrit til að framkvæma starfið okkar hér að ofan, hér er innihald handritsins:

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

Vistaðu síðan skrána og farðu úr, gerðu handritið keyranlegt og keyrðu það sem hér segir:

$ 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. Fyrir yfirlýsingu

Ef þú vilt framkvæma nokkrar Awk skipanir í lykkju, þá býður for yfirlýsingin þér viðeigandi leið til að gera það, með setningafræðinni hér að neðan:

Hér er nálgunin einfaldlega skilgreind með því að nota teljara til að stjórna lykkjuframkvæmdinni, fyrst þarf að frumstilla teljarann, keyra hann síðan gegn prófunarskilyrði, ef það er satt, framkvæma aðgerðirnar og að lokum auka teljarann. Lykkjan lýkur þegar teljarinn uppfyllir ekki skilyrðið.

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

Eftirfarandi Awk skipun sýnir hvernig for setningin virkar, þar sem við viljum prenta tölurnar 0-10:

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

3. Á meðan yfirlýsing

Hefðbundin setningafræði while setningarinnar er sem hér segir:

while ( condition ) {
          actions
}

Skilyrðið er Awk tjáning og aðgerðir eru línur af Awk skipunum sem eru framkvæmdar þegar skilyrðið er satt.

Hér að neðan er handrit til að sýna notkun while yfirlýsingarinnar til að prenta tölurnar 0-10:

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

Vistaðu skrána og gerðu skriftuna keyranlega, keyrðu hana síðan:

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

4. The do while Statement

Það er breyting á while yfirlýsingunni hér að ofan, með eftirfarandi undirliggjandi setningafræði:

do {
     actions
}
 while (condition) 

Lítill munur er sá að, þegar þú ert að gera á meðan, eru Awk skipanir framkvæmdar áður en ástandið er metið. Með því að nota dæmið undir while yfirlýsingunni hér að ofan getum við sýnt fram á notkun do while með því að breyta Awk skipuninni í test.sh handritinu sem hér segir:

#!/bin/bash

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

Eftir að hafa breytt handritinu skaltu vista skrána og hætta. Gerðu síðan handritið keyranlegt og keyrðu það sem hér segir:

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

Niðurstaða

Þetta er ekki tæmandi leiðarvísir varðandi Awk flæðistýringaryfirlýsingar, eins og ég hafði nefnt áðan, það eru nokkrar aðrar flæðistýringaryfirlýsingar í Awk.

Engu að síður ætti þessi hluti Awk seríunnar að gefa þér skýra grundvallarhugmynd um hvernig hægt er að stjórna framkvæmd Awk skipana út frá ákveðnum skilyrðum.

Þú getur líka útskýrt meira um restina af flæðistýringaryfirlýsingunum til að öðlast meiri skilning á efninu. Að lokum, í næsta hluta Awk seríunnar, munum við fara í að skrifa Awk handrit.