AWK - Flux de travail
Pour devenir un programmeur expert AWK, vous devez connaître ses composants internes. AWK suit un flux de travail simple - Lire, exécuter et répéter. Le diagramme suivant illustre le flux de travail d'AWK -
Lis
AWK lit une ligne dans le flux d'entrée (fichier, tube ou stdin) et la stocke en mémoire.
Exécuter
Toutes les commandes AWK sont appliquées séquentiellement sur l'entrée. Par défaut, AWK exécute des commandes sur chaque ligne. Nous pouvons limiter cela en fournissant des modèles.
Répéter
Ce processus se répète jusqu'à ce que le fichier atteigne sa fin.
Structure du programme
Voyons maintenant la structure du programme d'AWK.
Bloc BEGIN
La syntaxe du bloc BEGIN est la suivante -
Syntax
BEGIN {awk-commands}
Le bloc BEGIN est exécuté au démarrage du programme. Il ne s'exécute qu'une seule fois. C'est le bon endroit pour initialiser les variables. BEGIN est un mot clé AWK et doit donc être en majuscules. Veuillez noter que ce bloc est facultatif.
Bloc de corps
La syntaxe du bloc de corps est la suivante -
Syntax
/pattern/ {awk-commands}
Le bloc corps applique les commandes AWK sur chaque ligne d'entrée. Par défaut, AWK exécute des commandes sur chaque ligne. Nous pouvons limiter cela en fournissant des modèles. Notez qu'il n'y a pas de mots clés pour le bloc Body.
END Block
La syntaxe du bloc END est la suivante -
Syntax
END {awk-commands}
Le bloc END s'exécute à la fin du programme. END est un mot clé AWK et doit donc être en majuscules. Veuillez noter que ce bloc est facultatif.
Créons un fichier marks.txt qui contient le numéro de série, le nom de l'étudiant, le nom de la matière et le nombre de notes obtenues.
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
Affichons maintenant le contenu du fichier avec en-tête en utilisant le script AWK.
Example
[jerry]$ awk 'BEGIN{printf "Sr No\tName\tSub\tMarks\n"} {print}' marks.txt
Lorsque ce code est exécuté, il produit le résultat suivant -
Output
Sr No Name Sub Marks
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
Au début, AWK imprime l'en-tête du bloc BEGIN. Ensuite, dans le bloc body, il lit une ligne dans un fichier et exécute la commande d'impression d'AWK qui imprime simplement le contenu sur le flux de sortie standard. Ce processus se répète jusqu'à ce que le fichier atteigne la fin.