GNU/Linux >> Tutoriels Linux >  >> Linux

Pris dans la boucle ? Awk While, Do While, For Loop, Break, Continue, Exit Exemples

Cet article fait partie de la série d'exemples de didacticiels Awk en cours. Dans nos articles awk précédents, nous avons discuté de l'impression awk, des variables définies par l'utilisateur awk, des variables intégrées awk, des opérateurs awk et des instructions conditionnelles awk.

Dans cet article, passons en revue la boucle awk instructions - while, do while, for loops , break, continue et exit ainsi que 7 exemples pratiques.

Les instructions en boucle Awk sont utilisées pour effectuer un ensemble d'actions encore et encore successivement. Il exécute à plusieurs reprises une instruction tant que la condition est vraie. Awk a un certain nombre d'instructions en boucle comme le langage de programmation "C".

Boucle Awk While

Syntax:

while(condition)
	actions
  • while est un mot-clé.
  • la condition est une expression conditionnelle
  • les actions sont le corps de la boucle while qui peut avoir une ou plusieurs instructions. Si les actions ont plus d'une déclaration, elles doivent être placées entre accolades.

Comment ça marche ?Je suis mal à l'aise loop vérifie d'abord la condition, si la condition est vraie, puis elle exécute la liste des actions. Une fois l'exécution de l'action terminée, la condition est à nouveau vérifiée et, si elle est vraie, les actions sont à nouveau exécutées. Ce processus se répète jusqu'à ce que la condition devienne fausse. Si la condition retourne faux à la première itération alors les actions ne sont jamais exécutées.

1. Exemple de boucle Awk While :Créer une chaîne d'une longueur spécifique

$awk 'BEGIN { while (count++<50) string=string "x"; print string }'
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

L'exemple ci-dessus utilise le bloc spécial 'BEGIN { }' qui est exécuté avant toute autre chose dans un programme Awk. Dans ce bloc, la boucle awk while ajoute le caractère 'x' à la variable 'string' 50 fois. count est une variable qui est incrémentée et vérifiée si elle est inférieure à 50. Ainsi, après 50 itérations, cette condition devient fausse.
Après avoir bouclé, la variable "chaîne" est imprimée. Comme ce programme Awk n'a pas de corps, il se ferme après l'exécution du bloc BEGIN.

Boucle Awk Do-While

Comment ça marche ?Awk Do pendant La boucle est appelée boucle contrôlée par sortie, tandis que awk tandis que la boucle est appelée boucle contrôlée par entrée. Parce que la boucle while vérifie d'abord la condition, puis elle décide d'exécuter le corps ou non. Mais le mauvais faire pendant loop exécute le corps une fois, puis le répète tant que la condition est vraie.

Syntax:

do
action
while(condition)

Même si la condition est fausse, au début l'action est effectuée au moins une fois.

2. Awk Do While Boucle Exemple :Imprimer le message au moins une fois

$ awk 'BEGIN{
count=1;
do
print "This gets printed at least once";
while(count!=1)
}'
This gets printed at least once

Dans le script ci-dessus, l'instruction d'impression, exécutée au moins une fois, si vous utilisez l'instruction while, la condition sera d'abord vérifiée après l'initialisation du décompte à 1, à la première itération elle-même, la condition sera fausse, donc l'instruction d'impression gagnera ' t être exécuté, mais dans do while first body sera exécuté, il exécute donc l'instruction print.

Instruction Awk For Loop

Awk pour L'instruction est la même que la boucle awk while, mais sa syntaxe est beaucoup plus facile à utiliser.

Syntax:

for(initialization;condition;increment/decrement)
actions

Comment ça marche ?Awk pour L'instruction commence par exécuter l'initialisation, puis vérifie la condition, si la condition est vraie, elle exécute les actions, puis incrémente ou décrémente. Ensuite, tant que la condition est vraie, elle exécute à plusieurs reprises l'action, puis incrémente/décrémente.

3. Exemple de boucle Awk For . Imprimer la somme des champs sur toutes les lignes.

$ awk '{ for (i = 1; i <= NF; i++) total = total+$i }; END { print total }'
12 23 34 45 56
34 56 23 45 23
351

Initialement, la variable i est initialisée à 1, puis vérifie si i est inférieur ou égal au nombre total de champs, puis continue d'ajouter tous les champs et enfin l'addition est stockée dans la variable total. Dans le bloc FIN, imprimez simplement le total de la variable.

4. Exemple de boucle Awk For :imprime les champs dans l'ordre inverse sur chaque ligne.

$ awk 'BEGIN{ORS="";}{ for (i=NF; i>0; i--) print $i," "; print "\n"; }' student-marks
77  84  78  2143  Jones
45  58  56  2321  Gondrol
37  38  2122  RinRao
95  97  87  2537  Edwin
47  30  2415  Dayan

Nous avons discuté de la variable intégrée awk NF dans notre article précédent. Après avoir traité chaque ligne, Awk définit la variable NF sur le nombre de champs trouvés sur cette ligne.

Le script ci-dessus boucle dans l'ordre inverse de NF à 1 et affiche les champs un par un. Il commence par le champ $NF, puis $(NF-1),…, $1. Après cela, il imprime un caractère de nouvelle ligne.

Voyons maintenant d'autres instructions pouvant être utilisées avec une instruction en boucle.

Instruction Awk Break

L'instruction break est utilisée pour sortir de la boucle la plus interne (while, do-while et for loop) qui l'entoure.

5. Awk Break Exemple :Awk Script ne doit parcourir que 10 itérations

$ awk 'BEGIN{while(1) print "forever"}'

La boucle awk while ci-dessus imprime la chaîne "pour toujours" pour toujours, car la condition n'échoue jamais. Maintenant, si vous souhaitez arrêter la boucle après les 10 premières itérations, consultez le script ci-dessous.

$ awk 'BEGIN{
x=1;
while(1)
{
print "Iteration";
if ( x==10 )
break;
x++;
}}'
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration

Dans le script ci-dessus, il vérifie la valeur de la variable "x", si elle atteint 10, saute simplement hors de la boucle en utilisant l'instruction break.

Instruction Awk Continuer

L'instruction Continue ignore le reste du corps de la boucle, ce qui fait commencer immédiatement le cycle suivant autour de la boucle.

6. Awk Continue Exemple :Exécute la boucle sauf la 5ème itération

$ awk 'BEGIN{
x=1;
while(x<=10)
{
if(x==5){
x++;
continue;
}
print "Value of x",x;x++;
}
}'
Value of x 1
Value of x 2
Value of x 3
Value of x 4
Value of x 6
Value of x 7
Value of x 8
Value of x 9
Value of x 10

Dans le script ci-dessus, il imprime la valeur de x, à chaque itération, mais si la valeur de x atteint 5, alors il incrémente simplement la valeur de x, puis continue avec l'itération suivante, il n'exécutera pas le reste du corps de la boucle, de sorte que la valeur de x ne soit pas imprimée pour la valeur 5. L'instruction Continue n'a de sens que si vous utilisez with dans la boucle.

Instruction de sortie Awk

L'instruction de sortie entraîne l'arrêt immédiat de l'exécution de l'entrée en cours par le script et l'arrêt du traitement de l'entrée, toutes les entrées restantes sont ignorées.

Exit accepte n'importe quel entier comme argument qui sera le code d'état de sortie pour le processus awk. Si aucun argument n'est fourni, exit renvoie le statut zéro.

7. Awk Exit Exemple :sortie de la boucle à la 5ème itération

$ awk 'BEGIN{
x=1;
while(x<=10)
{
if(x==5){
exit;}
print "Value of x",x;x++;
}
}'
Value of x 1
Value of x 2
Value of x 3
Value of x 4

Dans le script ci-dessus, une fois que la valeur de x atteint 5, il appelle exit, ce qui arrête l'exécution du processus awk. Ainsi, la valeur de x n'est imprimée que jusqu'à 4, une fois qu'elle atteint 5, elle quitte.

Lecture recommandée

Sed et Awk 101 Hacks, par Ramesh Natarajan . Je passe plusieurs heures par jour sur un environnement UNIX / Linux à gérer des fichiers texte (fichiers de données, de configuration et de journalisation). J'utilise Sed et Awk pour tout mon travail de manipulation de texte. Sur la base de mon expérience Sed et Awk, j'ai écrit Sed and Awk 101 Hacks eBook qui contient 101 exemples pratiques sur diverses fonctionnalités avancées de Sed et Awk qui amélioreront votre vie UNIX / Linux. Même si vous utilisez Sed et Awk depuis plusieurs années et que vous n'avez pas lu ce livre, rendez-vous service et lisez ce livre. Vous serez étonné des capacités des utilitaires Sed et Awk.


Linux
  1. Le didacticiel de commande Numfmt avec des exemples pour les débutants

  2. Le didacticiel de commande de type avec des exemples pour les débutants

  3. Script Linux :3 tutoriels pour les boucles while dans Bash

  4. Exemples de boucle Bash For et de boucle While

  5. Bash for loop Exemples

Le didacticiel de commande fc avec des exemples pour les débutants

Bash Scripting - Boucle For expliquée avec des exemples

Tutoriel Regex pour les exemples Linux (Sed &AWK)

Comprendre la boucle for dans les scripts shell

La boucle while dans les scripts shell

La boucle Bash FOR expliquée et simplifiée