awk
est un langage de programmation développé par Alfred V. Aho, Peter J. Weinberger et Brian W. Kernighan.
Le langage AWK est interprété et il s'utilise avec l'interpréteur awk
ou gawk
.
AWK a été conçu pour permettre de facilement traitement des fichiers texte. Un script AWK contient un ensemble d'actions qui sont appliquées à des lignes d'un fichier texte qui matchent un pattern. Chaque ligne d'un script awk a la structure suivante :
/pattern/ { actions }
Le pattern
est une expression régulière et les actions spécifiées entre {} sont exécutées pour chaque ligne qui matche le pattern. AWK supporte deux patterns particuliers :
BEGIN
: matche le début du fichier, permet d'initialiser un script
END
: matche la fin du fichier
Les actions sont écrites en une syntaxe proche du C. Certaines variables ont un rôle spécial en AWK. La ligne qui matche le pattern est accessible aux actions via la variable $0
. Cette ligne est divisée par l'interpréteur AWK en champs. Par défaut, le séparateur entre champs est l'espace. La variable $1 contient le premier mot de la ligne, $2 le deuxième ... Il est possible de modifier le séparateurs de records en fixant la valeur de la variable FS.
awk "/void/ { print ; }" *c
: affiche toutes les lignes des fichiers .c
contenant void
cat /etc/passwd | awk "BEGIN { count=0; } /INFO21/ { count=count+1; print } END {print count;}"
: compte les étudiants d'INFO21 dans la liste des mots de passe
man awk
perl qui était initialement aussi un langage destiné à traiter des fichiers texte a évolué vers un langage nettement plus riche que awk
Sous Linux, c'est GNU awk (gawk
) qui est installé. Il offre plus de fonctionnalités que le awk
standard de Solaris. Vous pouvez obtenir le GNU awk sous Solaris avec la commande gawk