Misfu, le site des cours Informatique/Bureautique/Mathematiques


 

L'utilitaire Grep et les métacaractères

Introduction : recherche de lignes dans un fichier


La recherche de lignes (ou plus exactement de chaînes de caractères) dans un fichier se fait par la commande grep et ses deux variantes egrep et fgrep.


La commande grep


Description :

La commande grep lit les données par le canal d'entrée standard soit directement dans un fichier et permet de rechercher parmi les données les lignes comportant la chaîne de caractères fournie en paramètre .


Ses options permettent d'effectuer des recherches complexes correspondant à des critères multiples.

Dans les critères de recherche on peut utiliser des caractères spéciaux appelés métacaractères.


Syntaxe : grep [options] modèle_de_critères [fichier1 ...]


Exemples : grep 'Choux' flegumes


grep '[Cc]houx' flegumes


Options les plus utilisées


Option

Description

-v

De l'anglais inVert : Affichage des lignes ne contenant pas la chaîne indiquée

-l

De l'anglais List files only : Affichage uniquement des noms des fichiers contenant la chaîne recherchée. Les lignes ne sont pas affichées

-c

De l'anglais count : affichage du nombre de lignes trouvées sans affichage de ces lignes. Si recherche dans plusieurs fichiers, affichage du nom de chaque fichier suivi du nombre correspondant.

-n

Précéder chaque ligne contenant la chaîne recherchée de son numéro dans le fichier d'entrée.

-s

Les messages d'erreur ne seront pas affichées.


Les métacaractères les plus simples et les plus utilisés


métacaractère

Description

.

Un caractère quelconque y compris l'espace.

x*

Zéro ou plusieurs occurrences du caractères x

x+

Une ou plusieurs occurrences du caractères x

x?

Une occurrence unique du caractère x

^...

Début d'une ligne de texte

...$

Fin d'une ligne de texte

[...]

N'importe quel caractère se trouvant dans la liste entre crochets est permis à cet emplacement. exemple : [aA], [A-Z],

[^...]

N'importe quel caractère à l'exception de ceux se trouvant dans la liste entre crochets, est permis à cet emplacement. exemple : [^0-9]

Le caractère suivant est traité comme caractère normal et non comme métacaractère. Exemple : [

{n}

Pour définir le nombre de répétitions n du caractère placé devant




Exemples plus complets


Exemple

Explications

grep ^[A-Z][A-Z]*$ Tbres

une chaîne contenant des métacaractères neutralisés

.grep '^[A-Z][A-Z]*$ Tbres

Début : une lettre majuscule ; suivi d'un nombre quelconque de lettres majuscules avant la fin de ligne

grep [0-9]{9}$ carnet

Recherche des lignes comportant uniquement 4 chiffres (entre le début de la ligne et la fin de la ligne.


La commande egrep


Description

De L'anglais enhanced grep, cette commande élargit les possibilités de grep. Elle donne accès à d'autres métacaractères et des options supplémentaires.


Elle lit le critère de recherche dans le fichier Fichier_de_critere.


Syntaxe : egrep -f Fichier_de_critere fichier_de_recherche


Caractères spéciaux


caractères sp.

Description

+

Le caractère placé devant le '+' doit exister au minimum une fois

?

Le caractère placé devant le '?' peut apparaître une fois ou pas du tout

|

Les deux critères séparés par le '|' sont autorisés à cet emplacement.


La commande fgrep


Description :

De l'anglais fast grep, Recherche les lignes contenant un critère de recherche pouvant se trouver dans un fichier. Mais ne sait pas reconnaître les caractères spéciaux.


Syntaxe : fgrep -f fichier_de_critere fichier_de_recherche


Important : dans fichier_de_critere se trouvent des textes fixes, dans des lignes séparés. Les lignes contenant l'un ou l'autre de ces textes seront recherchées.




Par l'équipe technique A.N.F.A