Accueil
Accueil
Le
Club
Delphi
Kylix
C
C++
Java
J2EE
DotNET
& C#
Visual
Basic
Access
Pascal
Dev
Web
PHP
ASP
XML
UML
SQL
SGBD
Win
Linux
Autres

Tutoriel awk

Date de publication : 10/01/2005

Date de mise a jour :




II. Un programme awk
II-1. Fonctionnement
II-2. Structure
II-2-a. Le coeur du programme
II-2-b. Le démarrage : BEGIN
II-3-c. La fin : END


II. Un programme awk


II-1. Fonctionnement

Awk fonctionne en lisant des données. Ces données peuvent être ainsi traitées par l'utilisateur. Utilisateur qui peut choisir de lire des données provenant de fichiers ou du canal de l'entrée standard (via un pipe par exemple).
Par conséquent, Awk a pour but premier de jouer un rôle de filtre bien qu'il ne se limite pas qu'à cela.

Nous allons maintenant présenter en détail les différentes façons de lancer un programme awk.
La première manière est d'insérer en haut du fichier awk une ligne qu'on nomme shebang dont voici la syntaxe :

#! /usr/bin/awk -f
Pour connaître le chemin de l'exécutable awk, il vous suffit d'utiliser la commande suivante sous votre Shell :

nyal bash $ which awk /usr/bin/awk nyal bash $
Il ne vous reste plus qu'à mettre les droits d'exécution au fichier et vous pourrez le lancer comme un exécutable.
Une autre méthode consiste à lancer le fichier en utilisant la commande awk sous un Shell avec l'option -f. Voici différents lancement possibles :

nyal bash $ awk -f fichier_awk < fichier_texte nyal bash $ ls | awk -f fichier_awk
Maintenant que vous savez comment lancer un programme awk, nous allons expliquer la structure d'un programme.


II-2. Structure

Nous allons étudier comment awk nous permet de lire les données d'un fichier en expliquant les trois parties qui composent un programme en awk. Un programme Awk est composé de lignes de programmations ainsi que de lignes de commentaire. Les commentaires commencent après le caractère #.


II-2-a. Le coeur du programme

Ce coeur va être composé de conditions et d'actions qui vont être exécutées si la condition (ou critère) est remplie :

Condition { Action } ... Condition { Action }
L'accolade ouvrante doit être sur la même ligne que la condition, sinon une erreur va être produite. Un moyen de l'éviter est de faire :

Condition \ { Action } ... Condition { Action }
Voici donc d'autres syntaxes possibles. Vous pouvez bien entendu enchaîner les conditions/actions sur une même ligne. Et si une action ne possède pas de condition, elle est exécutée automatiquement.
Une condition est une expression qui va être analysée par awk. Si cette condition est réalisée alors l'action va être exécutée. Cette action peut correspondre à plusieurs instructions sur une ou plusieurs lignes. Si deux instructions se suivent sur la même ligne, il faut alors les séparer par un point-virgule :

1 < 2 { print "Hello World" print "Hello World 2"; print "Again" }
Maintenant nous allons voir comment awk exécute ce programme.

Awk va rappeler le coeur du programme qui est composé de critères/actions pour chaque enregistrement. Un enregistrement est représenté le plus souvent par une ligne. Par conséquent, si vous avez un fichier de 4 lignes que vous allez traiter, votre coeur du programme va être appelé quatre fois. Et pour chaque passage, c'est un nouvel enregistrement qui va être traité.

Bien sûr vous vous demandez comment accéder a l'enregistrement. Il y a pour cela un ensemble de variables à disposition, rempli par awk. Cela est expliqué en détail dans le chapitre suivant.
Il reste maintenant à expliquer les deux autres parties d'un programme en awk.


II-2-b. Le démarrage : BEGIN

Au démarrage d'un programme, awk peut exécuter des instructions avant le coeur du programme.
Ces instructions doivent être placées dans un bloc qui se nomme BEGIN

BEGIN { instructions }
Il peut y avoir plusieurs blocs BEGIN. Ils seront exécutés les uns après les autres n'importe où dans le fichier :

BEGIN { print "démarrage1" } Coeur du programme ... BEGIN \ { print "démarrage2" }
Le bloc BEGIN doit être obligatoirement suivi de son accolade ouvrante sur la même ligne. (A moins d'utiliser le caractère backslash devant le retour chariot)
Les bloc BEGIN sont très utiles pour initialiser des variables et donc préparer la suite du programme.


II-3-c. La fin : END

Contrairement aux blocs BEGIN, les blocs END sont exécutés à la fin du programme. Une fois que tous les enregistrements ont été traités par le coeur du programme. Il possède les mêmes propriétés que le bloc BEGIN :

END { print "fin du programme"; } END \ { print "C'est vraiment fini" print ".." }
Les blocs END peuvent permettre d'afficher des résultats du coeur du programme ainsi que d'autres messages.

Vous savez maintenant comment se compose un programme Awk. Nous allons maintenant voir toutes les possibilités du langage.

# Format d'un programme awk BEGIN { print "Démarrage du programme" } { print "Pas de critères. Donc ce message s'affiche autant de fois qu'il y a d'enregistrement" } END { print "Fin du programme" }


Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.
Vos questions techniques : forum d'entraide PHP - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright 2000..2004 www.developpez.com