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:
- ef-else yfirlýsing
- fyrir yfirlýsingu
- meðan yfirlýsing
- gera-á meðan yfirlýsing
- brotayfirlýsing
- halda áfram yfirlýsingu
- næsta yfirlýsing
- nextfile yfirlýsing
- ú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.