AWK Valid XHTML 1.1Cette page est conforme à la norme CSS!Mise à jour 10-2001
SOMMAIRE

Présentation
    Préambule
    Description du fonctionnement
Les exemples détaillés
Les outils et liens
Télécharger les exemples
PRESENTATIONRetour en haut de page

Préambule

Awk (dont le nom est constitué des initiales de ses créateurs) a été conçu à l'origine pour faciliter la manipulation des données : analyser des fichiers et produire des états ou rapports.

La difficulté provient du fait que les données se présentent sous forme de flots de caractères assez peu structurés.
Un mécanisme d'identification et d'extraction des données est alors indispensable afin de les présenter sous une forme appropriée (nouveau fichier ou affichage).

Il existe plusieurs versions de ce produit, notamment la version gpl appelée gawk.

Description du fonctionnement

Awk reçoit des données d'entrées par un mécanisme classique (entrée standard au clavier, fichier, pipe).

Parallèlement à ces données, une commande définit la manière dont elles doivent être traitées. Cette commande peut être transmise sous forme d'une chaîne ou être contenue dans un fichier et constituer alors un programme complexe (variables, boucles, ...).

Elle est constituée de deux parties :

Expression de recherche
Encadrée par des /
Elle utilise le mécanisme puissant des expressions régulières (utilisées dans d'autres langages comme perl par exemple) pour déterminer si la ligne d'entrée doit être traitée ou non.
La recherche s'effectue sur toute la ligne ou sur un seul champ.

On peut rechercher une chaîne, son absence, sa répétition, des caractères "joker", selon sa position (début, fin de champ), ...

Expression de sortie des données
Encadrée par des {}
Pour chaque ligne à traiter, la fonction printf envoie vers la sortie les résultats (écran fichier, pipe) .
Elle est composée à son tour de deux parties :
  • Le format de sortie
    Contient des constantes et des formats d'édition
    %s Chaine de caractères
    %20s Chaine de 20 caractères
    %d Nombre exprimé en décimal
    %5s Nombre décimal sur 5 caractères
    \n Saut de ligne
    ... format flottant, scientifique, cadrage gauche, ...

  • Les valeurs à afficher
    Celles-ci peuvent provenir soit du flot d'entrée, soit de variables calculées par le programme lui-même. On les sépare par des ",".
    $0 La totalité de la ligne d'entrée
    $1, $2 Chaque champ de la ligne d'entrée. Le séparateur standard est l'espace (celui de Linux) mais il peut être spécifié s'il est différent.
    abc Une variable du programme

LES EXEMPLES DETAILLESRetour en haut de page

Jeu de réflexion (awkinv1) Suiv.

Ce petit jeu consiste à remettre dans l'ordre une série désordonnée de 9 chiffres de 1 à 9.

La difficulté vient de la méthode utilisée : il faut reclasser les chiffres en les permutant à partir de la gauche, en en prenant 2, 3 ...
Cet exemple est écrit sous forme d'un programme complet, qui permet d'employer quelques fonctions de awk :
  • utilisation de variables,
  • boucles for,
  • gestion de tableaux,
  • fonctions

Le graphe de l'espace disque (graphdisk) Préc.

Cet exemple détaille précisément l'utilisation de awk sous forme d'une ligne de commande.
Awk est ici incorporé dans un script (décrit dans la page bash).
Il traite les valeurs d'un fichier, issues d'une commande système (df) pour obtenir l'occupation disque des différents points de montage.
Il produit en sortie un fichier contenant des commandes cut pour afficher les résultats sous forme semi-graphique.

Pour réaliser le traitement nécessaire, il a fallu utiliser :
  • une expression de sélection (simple),
  • le calcul de valeurs à partir des différents champs d'entrée,
  • le formattage de chaînes de caractères et de nombres,
  • la redirection de sortie vers un fichier

LES OUTILS ET LIENSRetour en haut de page

De l'aide

Une aide complète détaillant toutes les instructions de awk est disponible dans la distribution. Elle détaille les expressions régulières, les instructions de traitement.