Description

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.

Exemples

  • 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

Informations complémentaires

Trucs et astuces

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