Plūsmas kontroles paziņojumu izmantošana Awk - 12. daļa


Pārskatot visus līdz šim aplūkotos Awk piemērus, jau no teksta filtrēšanas darbību sākuma, pamatojoties uz dažiem nosacījumiem, šeit tiek iestatīta plūsmas vadības paziņojumu pieeja.

Awk programmēšanā ir dažādi plūsmas kontroles paziņojumi, un tie ietver:

  1. paziņojums if-else
  2. paziņojumam
  3. kamēr paziņojums
  4. paziņojums “do-while”
  5. paziņojums par pārtraukumu
  6. turpināt paziņojumu
  7. nākamais paziņojums
  8. paziņojums par nākamo failu
  9. izejas paziņojums

Tomēr šīs sērijas darbības jomā mēs izklāstīsim: if-else , for , while un do while kods> paziņojumi. Atcerieties, ka mēs jau esam izgājuši cauri Awk sērijām.

1. Ja-cits paziņojums

Paredzamā if utasítás sintakse ir līdzīga shell if sintaksei:

if  (condition1) {
     actions1
}
else {
      actions2
}

Iepriekš minētajā sintaksē condition1 un condition2 ir Awk izteiksmes, un darbības1 un darbības2 ir Awk komandas, kas izpildītas, kad attiecīgie nosacījumi ir izpildīti.

Kad nosacījums1 ir izpildīts, tas nozīmē, ka tas ir patiess, tiek izpildītas darbības1 un iziet no if paziņojuma, pretējā gadījumā tiek izpildītas darbības2.

Ja paziņojumu var paplašināt arī līdz if-else_if-else paziņojumam, kā norādīts tālāk:

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

Attiecībā uz iepriekš minēto veidlapu, ja nosacījums1 ir patiess, tad izpilda darbības1 un iziet no if paziņojuma, pretējā gadījumā tiek vērtēts nosacījums2 un, ja tas ir patiess, tiek izpildītas darbības2 un ja izeja iziet. Tomēr, ja nosacījums2 ir nepatiess, tiek izpildītas darbības3 un izeja no if.

Šeit ir piemērs, ja izmantojat paziņojumus, mums failā users.txt ir saglabāts lietotāju un viņu vecumu saraksts.

Mēs vēlamies izdrukāt paziņojumu, kurā norādīts lietotāja vārds un vai lietotāja vecums ir mazāks vai vecāks par 25 gadiem.

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

Mēs varam uzrakstīt īsu čaulas skriptu, lai veiktu savu darbu iepriekš. Šeit ir skripta saturs:

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

Pēc tam saglabājiet failu un izejiet no tā, izveidojiet skriptu izpildāmu un palaidiet to šādi:

$ 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. Paziņojums par

Gadījumā, ja vēlaties izpildīt dažas Awk komandas ciklā, for paziņojums piedāvā piemērotu veidu, kā to izdarīt, izmantojot zemāk esošo sintaksi:

Šeit pieeju vienkārši definē skaitītāja izmantošana, lai kontrolētu cilpas izpildi, vispirms jums ir jāinicializē skaitītājs, pēc tam palaidiet to pret testa nosacījumu, ja tas ir taisnība, izpildiet darbības un visbeidzot palieliniet skaitītāju. Cilpa tiek pārtraukta, kad skaitītājs neatbilst nosacījumam.

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

Šī Awk komanda parāda, kā darbojas priekšraksts for, kur mēs vēlamies izdrukāt skaitļus 0-10:

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

3. Kaut arī paziņojums

Paziņojuma while sintakse ir šāda:

while ( condition ) {
          actions
}

Nosacījums ir Awk izteiksme, un darbības ir Awk komandu rindas, kas izpildītas, ja nosacījums ir patiess.

Zemāk ir skripts, kas ilustrē while paziņojuma izmantošanu skaitļu 0-10 drukāšanai:

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

Saglabājiet failu un izveidojiet skriptu izpildāmu, pēc tam palaidiet to:

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

4. Paziņojums do while

Tas ir iepriekš minētā paziņojuma modifikācija ar šādu pamatā esošo sintaksi:

do {
     actions
}
 while (condition) 

Neliela atšķirība ir tāda, ka saskaņā ar do, kamēr Awk komandas tiek izpildītas pirms nosacījuma novērtēšanas. Izmantojot pašu piemēru zem paziņojuma iepriekš, mēs varam ilustrēt do lietošanu, mainot komandu Awk skriptā test.sh šādi:

#!/bin/bash

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

Pēc skripta modificēšanas saglabājiet failu un izejiet. Pēc tam izveidojiet skriptu izpildāmu un izpildiet to šādi:

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

Secinājums

Šī nav visaptveroša rokasgrāmata par Awk plūsmas kontroles paziņojumiem, kā jau minēju iepriekš, Awk ir vairāki citi plūsmas kontroles paziņojumi.

Neskatoties uz to, šai Awk sērijas daļai vajadzētu dot jums skaidru pamatideju par to, kā Awk komandu izpildi var kontrolēt, pamatojoties uz noteiktiem nosacījumiem.

Varat arī vairāk paskaidrot pārējos plūsmas kontroles paziņojumus, lai iegūtu lielāku izpratni par tematu. Visbeidzot, nākamajā Awk sērijas sadaļā mēs pievērsīsimies Awk skriptu rakstīšanai.