| AWK | Mise à jour 10-2001 |
|
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.
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 :
|
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 :
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 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. |