Cet article fait partie de la série Awk Tutorial and Examples en cours. Comme tous les autres langages de programmation, Awk possède également des variables définies par l'utilisateur et des variables intégrées.
Dans cet article, voyons comment définir et utiliser les variables awk .
- Les variables Awk doivent commencer par la lettre, suivie de caractères alphanumériques ou de traits de soulignement.
- Les mots clés ne peuvent pas être utilisés comme variable awk
- Awk ne prend pas en charge la déclaration de variable comme les autres langages de programmation
- Il est toujours préférable d'initialiser les variables awk dans la section BEGIN, qui ne seront exécutées qu'une seule fois au début.
- Il n'y a pas de types de données dans Awk. Le fait qu'une variable awk soit traitée comme un nombre ou comme une chaîne dépend du contexte dans lequel elle est utilisée.
Passons maintenant en revue quelques exemples simples pour apprendre à utiliser les variables awk définies par l'utilisateur.
Awk Exemple 1 :Facturation des livres
Dans cet exemple, le fichier d'entrée bookdetails.txt contient des enregistrements avec des champs :numéro d'article, nom du livre, quantité et tarif par livre.
$ cat bookdetails.txt 1 Linux-programming 2 450 2 Advanced-Linux 3 300 3 Computer-Networks 4 400 4 OOAD&UML 3 450 5 Java2 5 200
Maintenant, le script Awk suivant lit et traite le fichier bookdetails.txt ci-dessus et génère un rapport qui affiche le taux de chaque livre vendu et le montant total pour tous les livres vendus.
Jusqu'à présent, nous avons vu qu'Awk lit les commandes à partir de la ligne de commande, mais Awk peut également lire les commandes à partir du fichier en utilisant l'option -f.
Syntax: $ awk -f script-filename inputfilename
Maintenant, notre script Awk pour le calcul de la facturation des livres est donné ci-dessous.
$ cat book-calculation.awk BEGIN { total=0; } { itemno=$1; book=$2; bookamount=$3*$4; total=total+bookamount; print itemno," ", book,"\t","$"bookamount; } END { print "Total Amount = $"total; }
Dans le script ci-dessus,
- Awk Section DÉBUT initialise la variable total. itemno, total, book, bookamount sont des variables awk définies par l'utilisateur.
- Dans l'action d'Awk section, Quantity*bookprice sera stocké dans une variable appelée bookamount. Chaque montant sera ajouté au total.
- Enfin dans l'Awk END section, la variable totale aura le montant total.
Exécutez maintenant le script book-calculation.awk pour générer le rapport qui affiche chaque tarif de réservation et le montant total, comme indiqué ci-dessous.
$ awk -f book-calculation.awk bookdetails.txt 1 Linux-programming $900 2 Advanced-Linux $900 3 Computer-Networks $1600 4 OOAD&UML $1350 5 Java2 $1000 Total Amount = $5750
Awk Exemple 2. Calcul de la note de l'élève
Dans cet exemple, créez un fichier d'entrée "student-marks.txt" avec le contenu suivant :nom de l'étudiant, numéro de liste, score Test1, score Test2 et score Test3.
$ cat student-marks.txt Jones 2143 78 84 77 Gondrol 2321 56 58 45 RinRao 2122 38 37 65 Edwin 2537 78 67 45 Dayan 2415 30 47 20
Maintenant, le script Awk suivant calculera et générera le rapport pour afficher les notes moyennes de chaque élève, la moyenne des scores Test1, Test2 et Test3.
$cat student.awk BEGIN { test1=0; test2=0; test3=0; print "Name\tRollNo\t Average Score"; } { total=$3+$4+$5; test1=test1+$3; test2=test2+$4; test3=test3+$5; print $1"\t"$2"\t",total/3; } END{ print "Average of Test1="test1/NR; print "Average of Test2="test2/NR; print "Average of Test3="test3/NR; }
Dans le script Awk ci-dessus,
- Dans le Awk BEGIN section toutes les variables awk sont initialisées à zéro. test1, test2, test3 et total sont des variables awk définies par l'utilisateur.
- Dans l'ACTION Awk section, $3, $4, $5 sont respectivement les scores Test1, Test2 et Test3. la variable totale est l'addition de 3 scores aux tests pour chaque élève. La variable awk test1, test2 et test3 contient les scores totaux de chaque test correspondant.
- Donc dans le Awk END section, en divisant chaque total de test par le nombre total d'enregistrements (c'est-à-dire étudiant) vous donnera le score moyen. NR est une variable intégrée Awk qui donne le nombre total d'enregistrements en entrée.
Awk Exemple 3. Rapport HTML pour les détails de l'étudiant
Dans les deux exemples ci-dessus, nous avons vu la variable awk qui a des nombres comme valeurs. Cet exemple montre un script awk pour générer le rapport html pour le nom des étudiants et leur numéro de matricule.
$ cat string.awk BEGIN{ title="AWK"; print "<html>\n<title>"title"</title><body bgcolor=\"#ffffff\">\n<table border=1><th colspan=2 align=centre>Student Details</th>"; } { name=$1; rollno=$2; print "<tr><td>"name"</td><td>"rollno"</td></tr>"; } END { print "</table></body>\n</html>"; }
Utilisez le même fichier d'entrée student-marks.txt que nous avons créé dans l'exemple ci-dessus.
$ awk -f string.awk student-marks.txt <html> <title>AWK</title><body bgcolor="#ffffff"> <table border=1><th colspan=2 align=centre>Student Details</th> <tr><td>Jones</td><td>2143</td></tr> <tr><td>Gondrol</td><td>2321</td></tr> <tr><td>RinRao</td><td>2122</td></tr> <tr><td>Edwin</td><td>2537</td></tr> <tr><td>Dayan</td><td>2415</td></tr> </table></body> </html>
Nous pouvons stocker la sortie ci-dessus, ce qui donne le tableau html suivant. Dans le script ci-dessus, les variables nommées name et rollno sont des variables de chaîne, car elles sont utilisées dans un contexte de chaîne.
Student Details | |
---|---|
Jones | 2143 |
Gondrol | 2321 |
RinRao | 2122 |
Edwin | 2537 |
Dayan | 2415 |
Lecture recommandée