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