Recherche de site Web

Comment utiliser les instructions de contrôle de flux dans awk - Partie 12


Lorsque vous passez en revue tous les exemples d’Awk que nous avons couverts jusqu’à présent, dès le début de la série Awk, vous remarquerez que toutes les commandes des différents exemples sont exécutées séquentiellement, c’est-à-dire les unes après les autres.

Mais dans certaines situations, nous pouvons vouloir exécuter des opérations de filtrage de texte en fonction de certaines conditions, c’est là qu’intervient l’approche des instructions de contrôle de flux.

Il existe différentes instructions de contrôle de flux dans la programmation Awk, notamment :

  • instruction if-else
  • pour l’énoncé
  • instruction while
  • déclaration de maintien
  • déclaration break
  • continuer la déclaration
  • Déclaration suivante
  • instruction nextfile
  • Déclaration de sortie

Cependant, pour le cadre de cette série, nous allons nous étendre sur : if-else, for, while et do while. N’oubliez pas que nous avons déjà expliqué comment utiliser la déclaration suivante dans la partie 6 de cette série Awk.

1. L’instruction if-else

La syntaxe attendue de l’instruction if est similaire à celle de l’instruction if du shell :

if  (condition1) {
     actions1
}
else {
      actions2
}

Dans la syntaxe ci-dessus, condition1 et condition2 sont des expressions Awk, et actions1 et actions2 sont des commandes Awk exécutées lorsque les conditions respectives sont satisfaites.

Lorsque la condition1 est satisfaite, c’est-à-dire qu’elle est vraie, actions1 est exécutée et l’instruction if se termine, sinon actions2 est exécutée.

L’instruction if peut également être développée en une instruction if-else_if-else comme ci-dessous :

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

Dans ce formulaire, si la condition 1 est vraie, actions 1 est exécutée et l’instruction if se termine, sinon la condition 2 est évaluée et si elle est vraie, actions 2 est exécutée et l’instruction if se termine. Cependant, lorsque la condition2 est fausse, actions3 est exécutée et l’instruction if se termine.

Voici un exemple d’utilisation des instructions if, nous avons une liste d’utilisateurs et leurs âges stockés dans le fichier users.txt.

Sarah L			35    	F
Aaron Kili		40    	M
John  Doo		20    	M
Kili  Seth		49    	M    

Nous voulons imprimer une déclaration indiquant le nom d’un utilisateur et si son âge est inférieur ou supérieur à 25 ans.

Nous pouvons écrire un court script shell pour effectuer notre travail ci-dessus, voici le contenu du 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

Ensuite, enregistrez le fichier et quittez, rendez le script exécutable et exécutez-le comme suit :

chmod +x test.sh
./test.sh

Exemple de sortie :

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. La déclaration de for

Si vous souhaitez exécuter des commandes Awk en boucle, l’instruction for vous offre un moyen approprié de le faire, avec la syntaxe ci-dessous :

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

Ici, l’approche est simplement définie par l’utilisation d’un compteur pour contrôler l’exécution de la boucle, vous devez d’abord initialiser le compteur, puis l’exécuter sur une condition de test, si elle est vraie, exécuter les actions, et enfin incrémenter le compteur. La boucle se termine lorsque le compteur ne satisfait pas à la condition.

La commande Awk suivante montre comment fonctionne l’instruction for, où nous voulons afficher les nombres 0-10 :

awk 'BEGIN{ for(counter=0;counter<=10;counter++){ print counter} }'

Exemple de sortie :

0
1
2
3
4
5
6
7
8
9
10

3. L’énoncé while

La syntaxe conventionnelle de l’instruction while est la suivante :

while ( condition ) {
          actions
}

La condition est une expression Awk et les actions sont des lignes de commandes Awk exécutées lorsque la condition est vraie.

Vous trouverez ci-dessous un script pour illustrer l’utilisation de l’instruction while pour imprimer les nombres 0-10 :

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

Enregistrez le fichier et rendez le script exécutable, puis exécutez-le :

chmod +x test.sh
./test.sh

Exemple de sortie :

0
1
2
3
4
5
6
7
8
9
10

4. La déclaration do while

L’instruction do-while est une modification de l’instruction while avec la syntaxe suivante :

do {
     actions
}
 while (condition) 

La légère différence est que, sous do while, les commandes Awk sont exécutées avant que la condition ne soit évaluée. En utilisant l’exemple ci-dessous, nous pouvons illustrer l’utilisation de do while en modifiant la commande Awk dans le script test.sh comme suit :

#!/bin/bash

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

Après avoir modifié le script, enregistrez le fichier et quittez. Rendez ensuite le script exécutable et exécutez-le comme suit :

chmod +x test.sh
./test.sh

Exemple de sortie :

0
1
2
3
4
5
6
7
8
9
10
Conclusion

Ce n’est pas un guide complet concernant les instructions de contrôle de flux Awk, comme je l’ai mentionné plus tôt, il existe plusieurs autres instructions de contrôle de flux dans Awk.

Néanmoins, cette partie de la série Awk devrait vous donner une idée fondamentale claire de la façon dont l’exécution des commandes Awk peut être contrôlée en fonction de certaines conditions.

Vous pouvez également en dire plus sur le reste des instructions de contrôle de flux pour mieux comprendre le sujet. Enfin, dans la prochaine section de la série Awk, nous passerons à l’écriture des scripts Awk.

Pour ceux qui recherchent une ressource complète, nous avons compilé tous les articles de la série Awk dans un livre, qui comprend 13 chapitres et s’étend sur 41 pages, couvrant à la fois l’utilisation de base et avancée d’Awk avec des exemples pratiques.

Nom du produitPrixAcheter
eBook : Présentation du guide de démarrage Awk pour les débutants8,99 $[Acheter maintenant]

Articles connexes: