Tuteur Pour Le Langage AWK - Gilles HUNAULT
Maybe your like
Tuteur pour le langage AWK
Texte du Tuteur écrit par Gilles HUNAULT
Consultez aussi la liste des autres tuteurs (langages, logiciels, systèmes d'exploitations...) ...
Table des Matières
Le langage Awk
- Introduction au langage - Exemple élémentaire de parcours de fichier - Variables et Fonctions - Instructions en Awk - Expressions régulières et filtrage - Exercice de révision - Compléments sur Awk - Un exemple difficile en Awk sous Dos et sous UnixUne dizaine d'exemples gradués
# Xmp1.Awk : numérotation des lignes d'un fichier # Xmp2.Awk : numérotation cadrée des lignes d'un fichier # Xmp3.Awk : détection simple de chaine # Xmp4.Awk : détection par expression régulière # Xmp5.Awk : un bonjour amélioré # Xmp6.Awk : table de multiplication # Xmp7.Awk : moyenne de classe # Xmp8.Awk : un petit dictionnaire # Xmp9.Awk : gestion de répertoireINTRODUCTION
Le langage AWK est prévu pour traiter des fichiers texte. Si Prog.Awk contient le programme, et si on veut traiter le fichier Demo.Txt, on écrit : AWK -fPROG.AWK DEMO.TXT. Il y a ouverture du fichier, parcours ligne par ligne et action éventuelle, puis fermeture du fichier. La ligne courante a pour nom fixé $0 ; elle contient NF mots ; le ième mot s'appelle $i . L'affichage se fait par print ou printf (f pour formatté).Le traitement de chaque ligne se fait entre accolades { et } . On délimite les instructions par un ; . Les commentaires commencent par # ; on distingue majuscule et minuscule.
La syntaxe de base est la même que celle du langage C, sauf qu'on ne déclare pas les variables.
EXEMPLES
Avec le programme { print $1 " moyenne " ($2 +$3)/2 } et le fichier : BOBY 18 5 ZELYNOU 6 11 ANTIN 8 4 BOB 16 8 15 IZEL 16 18 12 on obtient comme affichage : BOBY moyenne 11.5 ZELYNOU moyenne 8.5 ANTIN moyenne 6 BOB moyenne 12 IZEL moyenne 17 De même, avec le programme { print $1 printf(" moyenne %5.2f\n",($2+$3)/2 ) } # fin de traitement de la ligne courante et le fichier : BOBY 18 5 ZELYNOU 6 11 ANTIN 8 4 BOB 16 8 15 IZEL 16 18 12 on obtient comme affichage : BOBY moyenne 11.50 ZELYNOU moyenne 8.50 ANTIN moyenne 6.50 BOB moyenne 12.00 IZEL moyenne 17.00VARIABLES ET FONCTIONS
Awk met à la disposition du programmeur des variables NR numéro global de l'enregistrement FNR numéro local de l'enregistrement FILENAME nom du fichier ouvert ARGV vecteur des arguments passés et des fonctions length(H) donne la longueur de H substr(C,D,F) renvoie F caractères de C à partir de D index(T,C) donne la position de C dans T ou 0 system(D) exécute la commande dos D close(F) ferme la fichier F gsub(R,S,T) remplace R par S dans T Les éléments de tableaux se notent entre crochets. Ainsi T[i] désigne l'élément en position i (i peut être numérique ou caractère).
INSTRUCTIONS
Les instructions classiques sont = affectation if conditionnelle for boucle pour while boucle tant que ++ incrémentation de 1 += incrémentation variable exemple : while( i*i < n ) { i++ } for (i=a;i TMP.TXT) Répertoire de G:\ AUTOEXEC BAT 236 8-09-91 11:37p CONFIG SYS 254 7-27-91 8:35a ESSAI AWK 648 4-13-90 11:40a S 647 8-11-91 1:47p STATDIR AWK 648 4-13-90 11:40a 5 Fichiers 776192 octets disponibles le programme /-/ && $1 !~ /^\./ { if (NF < 5) { $3 = $2 ; $2 = "???" } tot[$2] += $3 ; nb[$2] ++ } END { for (ext in tot) printf ("%-3s %3d %8d\n" , ext , nb[ext] , tot[ext] ) } affiche ??? 1 647 AWK 2 1296 BAT 1 236 SYS 1 254 Sous Unix, le même exercice donne # Xmp9.Awk : gestion de r‚éperoire BEGIN { fs="DIR.DIR" ; system("ls -al > " fs) ; close(fs) ; nbf = 0 for (iar=1;iar 0) { ext = substr($9,1+ip) } else { ext = "???" } tot[ext] += $5 ; nb[ext] ++ ; nbf++} END { print " ext nb_fich cumul_taille" for (ext in tot) printf ("%-15s %3d %12d\n" , ext , nb[ext] , tot[ext] ) system("rm " fs) if (nbf==0) { print " mais je n'ai vu aucun fichier !! "} }Cliquez ici pour une dizaine d'exemples gradués
Il est possible de récupérer le manuel de référence pour Gawk ici et une version sans doute plus récente là.
Tag » Apprendre Langage Awk
-
AWK : Le Langage Script De Référence Pour Le Traitement De Fichiers
-
Cours Utilisateur UNIX : La Commande Awk - FUNIX
-
[PDF] LE LANGAGE AWK
-
Comment Utiliser La Commande AWK Avec Des Exemples - Malekal
-
Scripts 1.1 - AWK : Manipulation De Champs | Tutos Fr - YouTube
-
Cours27 Langage De Programmation AWK - YouTube
-
Le Langage De Programmation Awk
-
Apprendre Les Commandes Linux: Awk - Linux Tips
-
UNIX Basics : La Pratique D'awk Par L'exemple: Introduction Rapide
-
Un Guide Pratique Pour Apprendre Awk - StepsBoard
-
Awk - Wikipédia
-
[PDF] Outils Pour La Manipulation Et L'Extraction De Données
-
V. Structures De Contrôles - Tutoriel Awk
-
[PDF] Chapitre 6 : AWK Et SED