Écrit par Zeph Grunschlag
egrepest un acronyme pour « Extended Global Regular Expressions Print ». C’est un programme qui scanne un fichier spécifié ligne par ligne, retournant les lignes qui contiennent un motif correspondant à une expression régulière donnée.
La commande egrep standard ressemble à :
egrep<flags> ‘<regularexpression>’ <filename>
Certains drapeaux courants sont : -c pour compter le nombre de correspondances réussies et ne pas imprimer les correspondances réelles, -i pour rendre la recherche insensible à la casse, -n pour imprimer le numéro de ligne avant chaque impression de correspondance, -vpour prendre le complément de l’expression régulière (c’est-à-dire retourner les lignes qui ne correspondent pas), et -l pour imprimer les noms de fichiers dont les lignes correspondent à l’expression.
Les expressions régulières viennent dans leur propre variante egrep (c’est très similaire aux expressions régulières trouvées dans emacs, perl, etc.)
(La lettre grecque ε (epsilon) représente la chaîne vide)
Une des principales différences entre les expressions régulières egrep et les expressions régulières théoriques est que dans egrep, les correspondances sont autorisées à se produire n’importe oùdans la chaîne, alors que dans l’utilisation théorique,les correspondances commencent toujours à partir du premier caractère de la chaîne et se terminent au derniercaractère. Par exemple, considérons la chaîne 000001000. Dans egrep, l’expression régulière 010 donne une correspondance ; par contre, l’expression régulière théorique 010 ne correspond pas à 000001000parce que 010 et 000001000 ne sont pas égaux. L’équivalent théorique de l’expression régulière 010 d’egrep est (0+1)*010(0+1)*. Et si vous voulez réellement considérer le début et la fin des chaînes de caractères ? egrep vous fournit le symbole caret ^ pour spécifier le début, et le symbole dollar $ pour la fin. Ainsi, l’équivalent egrep de la théorique 010 est donné par ^010$ .
Une autre paire d’egrepsymboles utiles sont les frontières de mots \< et\> qui dénotent respectivement le début et la fin d’un mot.
Pour spécifier un ensemble ou une plage de caractères, utilisez les accolades. Pour indiquer l’ensemble, utilisez le symbole du chapeau ^ comme premier caractère. Par exemple,
- est l’ensemble {a, 9, A, 0, 5 }.
- est l’ensemble complémentaire ASCII – { a, 9, A, 0, 5 } (tout sauf a, 9, A, 0 et 5).
- est l’ensemble de toutes les lettres minuscules { a, b, c, d, …, z }.
- est l’ensemble de toutes les lettres ASCII à l’exception des lettres minuscules, des chiffres compris entre 4 et 9, et des lettres majuscules Q et R.
Plusieurs exemples:
- egrep ‘^(0|1)+ +$’ searchfile.txt
correspond à toutes les lignes dans searchfile.txt qui commencent par une chaîne de bits non vide, suivie d’un espace, suivi d’un mot alphabétique non vide qui termine la ligne
.