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).
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) :
|
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).
|
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.