« grep » accepte un ensemble restreint d'expressions régulières,
en particulier, il n'accepte pas les symboles suivants :
+ |
? |
|
| |
( ) |
« grep » renvoie au shell un statut sur le résultat de sa recherche. Les différentes valeurs possibles sont :
Code | Description | ||||
0 | une occurrence au moins a été trouvée. | ||||
1 | aucune occurrence n'a été trouvée. | ||||
2 | il y a une erreur de syntaxe ou bien un des fichiers en entrée n'est pas accessible |
Remarque 13..2 :
Un statut « 0 » est équivalent à « Vrai ».
Un statut non nul équivaut à « Faux ».
On peut donc utiliser ce code dans les scripts lors de tests. Par exemple, il est possible d'afficher un message lorsque la recherche a été fructueuse ou non. Pour cela, la sortie standard de la commande « grep » sera redirigée dans un fichier spécial et seul le statut d'exécution sera utilisé.
Exemple 13..2 :
Dans cet exemple, la commande « grep » effectue sa recherche
dans « fichier ». Tout message d'erreur ou résultat d'affichage
n'apparaîtra pas à l'écran. Si la recherche donne un résultat
(« $? = 0
»), le message « Gagné » sera affiché. Si la
recherche est infructueuse ou s'il se produit une erreur, « Perdu »
sera affiché.
Exemple 13..3 :
grep '^[0-9][0-9]' fichier
Dans cet exemple, on fait appel à la notion d'expression régulière (cf.). L'expression «
^[0-9][0-9]
» se décompose de la façon suivante :
Cette expression régulière permet de décrire toute chaine de caractères commencant par deux chiffres quelconque. La commande « grep » va donc extraire de « fichier », toutes les lignes commencant par deux chiffres.
^
Début de ligne. [0-9]
Caractère quelconque compris entre les codes ASCII de 0 et de 9. Ces caractères sont : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Par conséquent « [0-9]
» représente un chiffre quelconque. Celui-ci doit apparaître une seule fois juste après le début de ligne[0-9]
Le second « [0-9]
» représente lui-aussi un chiffre quelconque. Celui-ci doit apparaître une seule fois juste après le précédent chiffre.