A propos des expressions régulières dans egrep.

É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

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.