Awk Digest
Awk Digest
Awk Digest
1 Dans notre exemple, chaque champ est séparé par un ou plusieurs blancs. Le
séparateur peut être modifie comme on le veut par la variable globale FS.
Pour l'instant, FS = " " .
2 AWK compte le nombre de champs d'une ligne courante; ce nombre est placé dans la variable
globale NF (dans l'exemple, NF est variable).
3 AWK compte le nombre de lignes du fichier d'entrée; ce nombre est placé dans la
variable globale NR (dans l'exemple, NR = 9).
4 Les champs sont désignés par $1, $2, etc. $0 représente toute la ligne.
$ cat essai
Bonjour,
Au revoir
# est un commentaire
Ceci la ligne numéro 7.
Au
On note que l'on n'exécute que le bloc END de awk. Ce bloc ne s'exécute qu'une fois, après la fin du
traitement des lignes (tout comme le bloc BEGIN ne s'exécute qu'une fois avant le parcours du
fichier).
Même exercice avec exécution du bloc central de awk : ce bloc s'exécute pour chaque ligne du fichier
$ cat awk_entree
alexandre moniteur 65 63 74
kernighan programmeur 25 8 41
mofiset sources 54 69 32
charles-andre restauration 62 2 37
La commande à utiliser :
On constate que par ce moyen, on peut réaliser des transformations très intéressantes sur les fichiers
de texte. Très utile dans les échanges inter-bases de données. Autre exemple dans le même domaine :
on dispose d'un gros fichier dont on connais la structure de façon incomplète. On veut l'importer
dans une base de données. Avant de créer la table d'accueil, on a besoin de connaitre la taille
maximale de chaque colonne. À noter que sur un fichier de deux millions de lignes le traitement se
fait en 1 ou 2 secondes.
L'exécution :