Utiliser Grep

De Diablotins.org.


Cette page est en travaux, elle n'est pas encore dans un état de diffusion
Image:Onwork.jpgUtilisez la page discussion associée pour connaitre les tâches à faire et prendre contact avec le/les responsable(s)
Cet page est en cours de rédaction par [[Utilisateur:{{{1}}}|{{{1}}}]]
Image:Onedit.jpgmerci de ne pas la modifier tant que cette boite d'alerte est visible
Discussion avec l'utilisateur [[Discussion_Utilisateur:{{{1}}}|{{{1}}}]]

L'utilisateur de la station de travail passe le plus clair de son temps à manipuler des fichiers à l'aide d'un éditeur. On qualifie souvent ces fichiers de fichiers texte, contre fichier binaire, pour distinguer le contenu adapté à l'utilisation par une opérateur humain du contenu adapté à l'utilisation par un automate. Quelques conventions de travail et l'utilisation appropriée de la commande grep(1) permettent d'afficher une partie bien ciblée du contenu d'un ensemble de fichiers imposant. On trouve ici quelques exemples de ce type d'utilisation; mais il ne s'agit pas d'un tutoriel pour la comamnde grep ni pour les expressions rationnelles.

1. Introduction

Il est fréquent de travailler sur des fichiers d'une taille conséquente, qui occupent plus de quelques pages-éditeur. Lorsque les programmes par lesquels on veut faire traiter cet imposant fichier comprennent une notion de commentaire, il est utile d'ajouter des repères dans le fichier, des explications concernant des points techniques ou des choix apparemment étranges, et de nombreux autres types d'informations complémentaires selon le type de fichier que l'on prépare. Dans un module rédigé en langage C on veut ajouter les spécifications des fonctions, ranger ensemble les fonctions qui effectuent des traitements voisins ou complémentaires; tandis que dans un fichier source TeX on veut insister sur tel et tel point de mise en page ou de rédaction.

Pour ne pas être dépassé par cette diversité, chacun adopte des conventions, souvent informelles, qui lui permettent d'identifier rapidement quel type d'information correspond à telle forme de commentaires. On discute ici quelques exemples de conventions qui adaptent l'information à son exploitation avec grep(1).


2. Expression rationnelles

Dans expressions rationnelles (regular expressions) le terme expression est à comprendre dans le même sens que dans expression algébrique, ceux pour qui ces souvenirs sont bien éloignés peuvent y penser comme à une "formule". Cette expression décrit un ensemble de parties d'un texte. Par exemple, l'ensemble des mots qui commencent par 'a' et terminent par 's' peut être décrit par une expression rationnelle ("a[^ ]*s"); l'ensemble des mots formés d'une succession de chiffres (i.e. les nombres écrits) peut lui aussi être décrit par une expression rationnelle ("[1-9][0-9]*"). En règle générale, les expressions rationnelles sont utiles pour reconnaître des éléments dans texte structuré, et l’expérience a prouvé que les programmes qui extraient ou manipulent des informations structurées sont d'une redoutable efficacité lorsque leurs méthodes de travail s'appuient sur les expressions rationnelles. Les programmes sed(1), ed(1), grep(1), awk(1) et perl(1) en sont de bons exemples.

3. Mettre en évidence la structure d'un fichier

Alice prépare un ensemble de macros TeX, elle veut produire un format TeX adapté à la production du futur journal du département d'informatique de l'université de St. Anford.

X. Trivia

Le nom du programme grep(1) provient d'un trait de langage fréquemment utilisé du programme ed(1). Lors d'une session de travaille avec ed(1), la commande "g/a[^ ]*s/p" permet par exemple d'afficher chaque ligne d'un fichier contenant un mot dont 'a' est la première lettre et 's' la dernière. Si on remplace l'expression rationnelle particulière "a[^ ]*s" utilisée ici par le terme générique 'regular expression' on obtient "g/regular expression/p" puis "g/re/p", le terme 're' étant une abréviation très courante pour 'regular expression'.

Outils personnels
Projets :