next up previous contents index
Next: La commande cut Up: Bases et commandes utiles Previous: Utilisation de tubes

     
Filtre grep

grep est un filtre. Il peut trouver un mot dans un fichier, par exemple :

grep malloc *.c

cherche la chaine de caractères malloc dans tous les fichiers dont le nom se termine par .c (*.c).

On peut insérer une variable dans le critère de recherche (utile pour les scripts shells) :

grep "^[^:]*:[^:]*:$1:" /etc/passwd
grep "^$utilisateur
grep "^$utilisateur" > /dev/null 2>&1

ou utiliser un tube pour filtrer la sortie d'une commande :

locate Quick | grep dosemu

Pour élaborer un modèle de recherche, on dispose d'un certain nombre de caractères spéciaux (tableau 1.1).


 
Tableau 1.1: Caractères spéciaux servant de modèle pour grep.
Caractère Signification
[...] Plage de caractères permis.
[^...] Plage de caractères interdits.
^ Début de ligne.
. Un caractère quelconque, y compris un espace.
* Caractère de répétition, agit sur le caractère placé avant l'étoile. Accepte également l'absence du caractére placé devant lui.
$ Fin de ligne.
\{...\} Répétition.
\{Nombre\} Répétition de Nombre exactement.
\{Nombre,\} Répétition de Nombre au minimum.
\{Nombre1 Nombre2\} Répétition de Nombre1 à Nombre2.

 

Le tableau 7.1 page [*] présente d'autres modèles pouvant être utilisés.

Par ailleurs, plusieurs options peuvent être utilisées. Voici quelque options utiles de la commande grep (tableau 1.2) :


 
Tableau 1.2: Options courantes de la commande grep.
Option Signification
-c Nombre de ligne trouvées (sans les afficher).

-i

Ne fait pas la différence entre majuscule et minuscule.

-n

Affiche le numero de la ligne.

-l

Affiche le nom du fichier contenant la ligne (et pas la ligne).

-v

Affiche toutes les lignes qui ne contiennent pas le mot en question.

 

Il existent deux autres commandes qui élargissent les possibilitées de la commande grep : egrep et fgrep.
   

La commande egrep permet d'utiliser un fichier contenant un ou des critères de recherche avec l'option -f. Si plusieurs critères sont spécifiés, egrep cherchera pour chacun de ces critères (OU logique). Il existe par ailleurs plusieurs options qui peuvent simplifier les critères de recherche (tableau 1.3).


 
Tableau 1.3: Caractères spéciaux servant de modèle pour fgrep.
Caractère Signification
+ Caractère de répétition. Le caractère placé devant ce signe doit exister au minimum une fois.

?

Caractère de répétition. Le caractère placé devant peut apparaître une fois ou pas du tout.

(a| b)

L'une ou l'autre des expressions sont autorisées.

(...)

Permettent de grouper des critères partiels.
 

Voici quelque exemples d'utilisation :

[a-z]+

cherche toutes les lignes contenant au minimum une lettre en minuscule. Le critère avec grep aurait été [a-z][a-z]*.

^[0-9]\{3\}$

cherche toutes les lignes contenant uniquement un nombre à 3 chiffres.

:[0-9]\{2,\}:

cherche toutes les lignes contenant des nombres de minimum 2 chiffres avant les deux points (``:'').

^[0-9]\{1,5\}:

cherche toutes les lignes commencant par des nombres de minimum 1 à 5 chiffres suivits par deux points (``:'').

(une|deux) fois

cherche toutes les lignes contenant la chaîne ``une fois'' ou ``deux fois''.

La commande fgrep effectue une recherche plus rapide, mais ne reconnaît pas les caractères spéciaux. Comme pour egrep, on peut spécifier un fichier contenant un ou des critères de recherche avec l'option -f. Un tel fichier pourra par exemple contenir :

une fois
deux fois

et les lignes contenant l'un ou l'autre de ces textes seront recherchées.


next up previous contents index
Next: La commande cut Up: Bases et commandes utiles Previous: Utilisation de tubes
MATHIEU DECORE
1999-11-03
Merci de me dire ce que pensez de ce document.