Bii o ṣe le Lo Awọn Gbólóhùn Iṣakoso Iṣakoso ni Awk - Apá 12


Nigbati o ba ṣe atunyẹwo gbogbo awọn apẹẹrẹ Awk ti a ti bo tẹlẹ, ni ọtun lati ibẹrẹ awọn iṣẹ sisẹ ọrọ ti o da lori awọn ipo kan, iyẹn ni ibiti ọna ti awọn alaye iṣakoso ṣiṣan ti ṣeto.

Ọpọlọpọ awọn alaye iṣakoso ṣiṣan ṣiṣan ni siseto Awk ati iwọnyi pẹlu:

  1. ti o ba jẹ pe alaye miiran
  2. fun alaye
  3. lakoko alaye
  4. ṣe-lakoko alaye
  5. fọ adehun
  6. tẹsiwaju alaye
  7. alaye ti o tẹle
  8. gbólóhùn faili tókàn
  9. gbólóhùn jade

Sibẹsibẹ, fun aaye ti jara yii, a yoo ṣe alaye lori: koodu> awọn alaye. Ranti pe a ti rin tẹlẹ nipasẹ Awk jara.

1. Gbólóhùn ti o ba jẹ pe miiran

Iṣeduro ti a nireti ti ti o ba jẹ alaye jẹ iru si ti ikarahun ti alaye naa ba jẹ:

if  (condition1) {
     actions1
}
else {
      actions2
}

Ninu sintasi ti o wa loke, condition1 ati condition2 jẹ awọn ọrọ Awk, ati awọn iṣe1 ati awọn iṣe2 jẹ awọn aṣẹ Awk ti a ṣe nigbati awọn ipo oniwun wa ni inu didun.

Nigbati ipo1 ba ni itẹlọrun, itumo o jẹ otitọ, lẹhinna a ṣe awọn iṣe1 ati pe ti alaye naa ba jade, bibẹẹkọ awọn iṣe2 ni pipa.

Alaye ti o ba tun le fẹ si ọrọ if-else_if-miran bi isalẹ:

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

Fun fọọmu ti o wa loke, ti o ba jẹ pe ipo1 jẹ otitọ, lẹhinna a ṣe awọn iṣe1 ati pe ti alaye ba jade, bibẹkọ ti a ṣe ayẹwo ipo2 ati pe ti o ba jẹ otitọ, lẹhinna a ṣe awọn iṣe2 ati pe ti alaye naa ba jade. Sibẹsibẹ, nigbati ipo2 jẹ eke lẹhinna, a ṣe awọn iṣe3 ati pe ti alaye ba jade.

Eyi ni ọran ni aaye ti lilo ti awọn alaye, a ni atokọ ti awọn olumulo ati awọn ọjọ-ori wọn ti o fipamọ sinu faili, users.txt.

A fẹ lati tẹjade ọrọ kan ti o nfihan orukọ olumulo kan ati boya ọjọ-ori olumulo naa kere tabi ju ọdun 25 lọ.

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

A le kọ iwe ikarahun kukuru lati ṣe iṣẹ wa loke, eyi ni akoonu ti afọwọkọ naa:

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

Lẹhinna fi faili naa pamọ ki o si jade, jẹ ki iwe afọwọkọ ṣee ṣiṣẹ ki o ṣiṣẹ bi atẹle:

$ 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. Awọn fun Gbólóhùn

Ni ọran ti o fẹ ṣe diẹ ninu awọn ofin Awk ni lupu, lẹhinna alaye fun ọ ni ọna ti o baamu lati ṣe eyi, pẹlu sintasi ni isalẹ:

Nibi, ọna ti wa ni asọye ni irọrun nipa lilo apako lati ṣakoso ipaniyan lupu, akọkọ o nilo lati ṣe ipilẹ counter, lẹhinna ṣiṣe rẹ lodi si ipo idanwo kan, ti o ba jẹ otitọ, ṣe awọn iṣe naa ati nikẹhin alekun counter. Lupu naa pari nigbati ounka ko ba ni itẹlọrun ipo naa.

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

Atẹle Awk atẹle yii fihan bi alaye fun alaye n ṣiṣẹ, nibiti a fẹ tẹ awọn nọmba 0-10 naa:

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

3. Gbólóhùn Nigba naa

Iṣeduro aṣa ti alaye lakoko lakoko yii:

while ( condition ) {
          actions
}

Ipo naa jẹ ifihan Awk ati awọn iṣe jẹ awọn ila ti awọn aṣẹ Awk ti a ṣe nigbati ipo naa jẹ otitọ.

Ni isalẹ jẹ iwe afọwọkọ kan lati ṣe apejuwe lilo lakoko ti alaye lati tẹ awọn nọmba 0-10 jade:

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

Fipamọ faili naa ki o jẹ ki iwe afọwọkọ ṣiṣẹ, lẹhinna ṣiṣẹ:

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

4. Awọn ṣe lakoko Gbólóhùn

O jẹ iyipada ti alaye lakoko ti o wa loke, pẹlu sintasi ipilẹ atẹle:

do {
     actions
}
 while (condition) 

Iyatọ diẹ ni pe, labẹ ṣe lakoko, awọn pipaṣẹ Awk ni a ṣiṣẹ ṣaaju ṣiṣe ayẹwo ipo naa. Lilo apẹẹrẹ pupọ labẹ lakoko ti alaye loke, a le ṣe apejuwe lilo ti ṣe lakoko nipa yiyipada aṣẹ Awk ninu iwe afọwọkọ test.sh gẹgẹbi atẹle:

#!/bin/bash

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

Lẹhin ti o ṣe atunṣe iwe afọwọkọ, fi faili pamọ ki o jade. Lẹhinna jẹ ki iwe afọwọkọ ṣiṣẹ ati ṣiṣẹ bi atẹle:

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

Ipari

Eyi kii ṣe itọsọna okeerẹ nipa awọn alaye iṣakoso ṣiṣan Awk, bi mo ti sọ tẹlẹ, awọn alaye ṣiṣakoso ṣiṣan ṣiṣan miiran miiran wa ni Awk.

Laibikita, apakan yii ti Awk jara yẹ ki o fun ọ ni imọran ipilẹ ti o rọrun ti bawo ni a ṣe le ṣakoso ipaniyan awọn ofin Awk da lori awọn ipo kan.

O tun le ṣalaye diẹ sii lori iyoku awọn alaye iṣakoso ṣiṣan lati ni oye diẹ sii lori koko-ọrọ naa. Ni ipari, ni abala atẹle ti jara Awk, a yoo lọ sinu kikọ awọn iwe afọwọkọ Awk.