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.