Commande Linux egrep

Mise à jour : 13/03/2021 par Computer Hope

Sur les systèmes d’exploitation de type Unix, la commande egrep recherche un motif de texte, en utilisant des expressions régulières étendues pour effectuer la correspondance. Exécuter egrep est équivalent à exécuter grep avec l’option -E.

Cette page couvre la version GNU/Linux d’egrep.

Syntaxe

egrep PATTERN 

Options

-A NUM,
–après-contexte=NUM
Imprime NUM lignes de contexte de queue après les lignes correspondantes. Place une ligne contenant — entre des groupes contigus de correspondances.
-a, –text Traiter un fichier binaire comme s’il s’agissait de texte ; ceci est équivalent à l’option –binary-files=text.
-B NUM,
–avant-contexte=NUM
Imprimer NUM lignes de contexte de tête avant les lignes correspondantes. Place une ligne contenant — entre des groupes contigus de correspondances.
-C NUM, –context=NUM Imprime NUM lignes de contexte de sortie. Place une ligne contenant — entre des groupes contigus de correspondances.
-b, –byte-offset Imprime le décalage d’octets dans le fichier d’entrée avant chaque ligne de sortie.
–binary-files=TYPE Si les premiers octets d’un fichier indiquent que celui-ci contient des données binaires, suppose que le fichier est de type TYPE. Par défaut, TYPE est binaire, et grep produit normalement soit un message d’une ligne indiquant qu’un fichier binaire correspond, soit aucun message s’il n’y a pas de correspondance. Si TYPE est without-match, grep suppose qu’un fichier binaire ne correspond pas ; ceci est équivalent à l’option -I. Si TYPE est text, grep traite un fichier binaire comme si c’était du texte ; ceci est équivalent à l’option -a. Avertissement : grep –binary-files=text pourrait produire des déchets binaires, ce qui peut avoir des effets secondaires désagréables si la sortie est un terminal et si le pilote du terminal interprète certains d’entre eux comme des commandes.
–colour,
–color
Encercler la chaîne correspondante avec le marqueur find dans la variable d’environnement GREP_COLOR. WHEN peut être ‘never’, ‘always’, ou ‘auto’
-c, –count Supprime la sortie normale ; à la place, imprime un compte de lignes correspondantes pour chaque fichier d’entrée. Avec l’option -v, –invert-match (voir ci-dessous), comptez les lignes non correspondantes.
-D ACTION,
–devices=ACTION
Si un fichier d’entrée est un périphérique, une FIFO ou une socket, utilisez ACTION pour le traiter. Par défaut, ACTION est read, ce qui signifie que les périphériques sont lus comme s’il s’agissait de fichiers ordinaires. Si ACTION est skip, les périphériques sont ignorés silencieusement.
-d ACTION,
–répertoires=ACTION
Si un fichier d’entrée est un répertoire, utilisez ACTION pour le traiter. Par défaut, ACTION est read, ce qui signifie que les répertoires sont lus comme s’il s’agissait de fichiers ordinaires. Si ACTION est skip, les répertoires sont ignorés silencieusement. Si ACTION est recurse, grep lit tous les fichiers sous chaque répertoire, de manière récursive ; ceci est équivalent à l’option -r.
-e PATTERN,
–regexp=PATTERN
Utiliser PATTERN comme motif ; utile pour protéger les motifs commençant par « -« .
-F, –fixed-strings Interpréter PATTERN comme une liste de chaînes fixes, séparées par des nouvelles lignes, qui peuvent être mises en correspondance.
-P, –perl-regexp Interpréter PATTERN comme une expression régulière Perl.
-f FICHIER, –fichier=FICHIER Obtenir les motifs du FICHIER, un par ligne. Le fichier vide contient zéro motif, et ne correspond donc à rien.
-G, –basic-regexp Interpréter PATTERN comme une expression régulière de base (voir ci-dessous). C’est la valeur par défaut.
-H, –with-filename Imprime le nom du fichier pour chaque correspondance.
-h, –no-filename Supprimer le préfixe des noms de fichiers sur la sortie lorsque plusieurs fichiers sont recherchés.
–help Sortir un bref message d’aide.
-I Traiter un fichier binaire comme s’il ne contenait pas de données correspondantes ; ceci est équivalent à l’option –binary-files=without-match.
-i, –ignore-case Ignorer les distinctions de casse à la fois dans le PATTERN et les fichiers d’entrée.
-L,
–files-without-match
Supprime la sortie normale ; à la place, imprime le nom de chaque fichier d’entrée à partir duquel aucune sortie ne s’imprimerait normalement. Le balayage s’arrête à la première correspondance.
-l, –files-with-matches Supprime la sortie normale ; au lieu de cela, imprime le nom de chaque fichier d’entrée à partir duquel la sortie s’imprimerait normalement. L’analyse s’arrête à la première correspondance.
-m NUM,
–max-count=NUM
S’arrête de lire un fichier après NUM lignes correspondantes. Si l’entrée est l’entrée standard d’un fichier régulier, et que NUM lignes correspondantes sont sorties, grep s’assure que l’entrée standard est positionnée après la dernière ligne correspondante avant de se terminer, indépendamment de la présence de lignes contextuelles de queue. Cela permet à un processus appelant de reprendre une recherche. Lorsque grep s’arrête après NUM lignes correspondantes, il sort toutes les lignes contextuelles de queue. Lorsque l’option -c ou –count est également utilisée, grep n’affiche pas un nombre supérieur à NUM. Lorsque l’option -v ou –invert-match est également utilisée, grep s’arrête après la sortie de NUM lignes non correspondantes.
–mmap Si possible, utilisez l’appel système mmap pour lire l’entrée, au lieu de l’appel système read par défaut. Dans certaines situations, –mmap donne de meilleures performances. Cependant, –mmap peut provoquer un comportement indéfini (y compris des vidages de noyau) si un fichier d’entrée rétrécit pendant que grep fonctionne, ou si une erreur d’E/S se produit.
-n, –line-number Préfixer chaque ligne de sortie avec le numéro de ligne dans son fichier d’entrée.
-o, –only-matching Affiche uniquement la partie d’une ligne correspondante qui correspond à PATTERN.
–label=LABEL Affiche l’entrée provenant réellement de l’entrée standard comme une entrée provenant du fichier LABEL. Ceci est particulièrement utile pour des outils comme zgrep, par exemple, gzip -cd foo.gz |grep -H –label=foo quelque chose
–line-buffered Utiliser la mise en mémoire tampon des lignes. Cela peut entraîner une pénalité de performance.
-q, –quiet, –silent Soyez silencieux ; n’écrivez rien sur la sortie standard. Sortir immédiatement avec le statut zéro si une correspondance est trouvée, même si une erreur a été détectée. Voir aussi l’option -s ou –no-messages.
-R, -r, –recursive Lire tous les fichiers sous chaque répertoire, de manière récursive ; ceci est équivalent à l’option -d recurse. Modifié par:
–include=PATTERN
Récurse dans les répertoires en ne recherchant que les fichiers correspondant à PATTERN.
–exclude=PATTERN
Récurse dans les répertoires en sautant les fichiers correspondant à PATTERN.
-s, –no-messages Supprime les messages d’erreur concernant les fichiers inexistants ou illisibles. Note sur la portabilité : contrairement à GNU grep, traditional grep n’était pas conforme à POSIX.2, car traditional grep n’avait pas d’option -q et son option -s se comportait comme l’option -q de GNU grep. Les scripts shell destinés à être portables à grep traditionnel devraient éviter à la fois -q et -s et rediriger la sortie vers /dev/null à la place.
-U, –binary Traiter le ou les fichiers comme des binaires. Par défaut, sous MS-DOS et Microsoft Windows, grep devine le type de fichier en regardant le contenu des 32 premiers Ko lus dans le fichier. Si grep décide que le fichier est un fichier texte, il supprime les caractères CR du contenu du fichier original (pour que les expressions régulières avec ^ et $ fonctionnent correctement). La spécification de -U annule cette supposition, ce qui fait que tous les fichiers sont lus et passés au mécanisme de correspondance mot à mot ; si le fichier est un fichier texte avec des paires CR/LF à la fin de chaque ligne, cela fait échouer certaines expressions régulières. Cette option n’a aucun effet sur les plateformes autres que MS-DOS et MS-Windows.
-u, –unix-byte-offsets Reporter les décalages d’octets de style Unix. Ce commutateur fait en sorte que grep rapporte les décalages d’octets comme si le fichier était un fichier texte de style Unix, c’est-à-dire avec les caractères CR supprimés. Cela produit des résultats identiques à l’exécution de grep sur une machine Unix. Cette option n’a aucun effet sauf si l’option -b est également utilisée ; elle n’a aucun effet sur les plates-formes autres que MS-DOS et MS-Windows.
-V, –version Imprime le numéro de version de grep sur l’erreur standard. Ce numéro de version devrait être inclus dans tous les rapports de bogue (voir ci-dessous).
-v, –inverser-match Inverser le sens de la correspondance, pour sélectionner les lignes non correspondantes.
-w, –mot-regexp Sélectionner uniquement les lignes contenant des correspondances qui forment des mots entiers. Le test est que la sous-chaîne correspondante doit être soit au début de la ligne, soit précédée d’un caractère constitutif non-mot. De même, elle doit se trouver à la fin de la ligne ou être suivie d’un caractère non constitutif de mot. Les caractères constitutifs de mot sont des lettres, des chiffres et le trait de soulignement.
-x, –line-regexp Sélectionner uniquement les correspondances qui correspondent exactement à la ligne entière.
-y Synonyme obsolète de -i.
-Z, –null Afficher un octet zéro (le caractère ASCII NULL) au lieu du caractère qui suit normalement un nom de fichier. Par exemple, grep -lZ sort un octet zéro après chaque nom de fichier au lieu de la nouvelle ligne habituelle. Cette option rend la sortie sans ambiguïté, même en présence de noms de fichiers contenant des caractères inhabituels comme les nouvelles lignes. Cette option peut être utilisée avec des commandes comme find -print0, perl -0, sort -z, et xargs -0 pour traiter des noms de fichiers arbitraires, même ceux qui contiennent des caractères de nouvelle ligne.

Expressions régulières

Une expression régulière est un motif qui décrit un ensemble de chaînes de caractères. Les expressions régulières sont construites de manière analogue aux expressions arithmétiques, en utilisant divers opérateurs pour combiner des expressions plus petites.

Grep comprend deux versions différentes de la syntaxe des expressions régulières : « basique » et « étendue ». Dans GNU grep, il n’y a pas de différence dans les fonctionnalités disponibles en utilisant l’une ou l’autre syntaxe. Dans d’autres implémentations, les expressions régulières de base sont moins puissantes. La description suivante s’applique aux expressions régulières étendues, qui sont utilisées dans egrep ; les différences pour les expressions régulières de base sont résumées ensuite.

Les blocs de construction fondamentaux sont les expressions régulières qui correspondent à un seul caractère. La plupart des caractères, y compris toutes les lettres et tous les chiffres, sont des expressions régulières qui se correspondent elles-mêmes. Tout métacaractère ayant une signification spéciale peut être cité en le faisant précéder d’une barre oblique inverse.

Une expression entre crochets est une liste de caractères entourée de . Elle correspond à n’importe quel caractère unique de cette liste ; si le premier caractère de la liste est le signe d’insertion ^, elle correspond à tout caractère ne figurant pas dans la liste. Par exemple, l’expression régulière correspond à tout chiffre unique.

A l’intérieur d’une expression entre crochets, une expression d’intervalle consiste en deux caractères séparés par un trait d’union (« -« ). Elle correspond à tout caractère unique classé entre les deux caractères, inclus, en utilisant la séquence de collation et le jeu de caractères de la locale. Par exemple, dans la locale C par défaut, est équivalent à . De nombreuses locales trient les caractères dans l’ordre du dictionnaire, et dans ces locales, n’est souvent pas équivalent à ; il peut être équivalent à , par exemple. Pour obtenir l’interprétation traditionnelle des expressions entre crochets, vous pouvez utiliser la locale C en définissant la variable d’environnement LC_ALL à la valeur C.

Enfin, certaines classes de caractères nommés sont prédéfinies dans les expressions entre crochets, comme suit. Leurs noms sont explicites, et ce sont , , , , , , , , , , et . Par exemple, ] signifie , sauf que cette dernière forme dépend de la locale C et du codage des caractères ASCII, alors que la première est indépendante de la locale et du jeu de caractères. (Notez que les crochets dans ces noms de classe font partie des noms symboliques, et doivent être inclus en plus des crochets délimitant la liste des crochets). La plupart des métacaractères perdent leur signification particulière à l’intérieur des listes. Pour inclure un caractère littéral ], placez-le en premier dans la liste. De même, pour inclure un ^ littéral, placez-le n’importe où sauf en premier. Enfin, pour inclure un caractère littéral -, placez-le en dernier.

Le point . correspond à tout caractère unique. Le symbole \w est un synonyme de ] et \W est un synonyme de ].

Le caret ^ et le signe dollar (« $ ») sont des métacaractères qui correspondent respectivement à la chaîne vide en début et en fin de ligne. Les symboles \< et \> correspondent respectivement à la chaîne vide au début et à la fin d’un mot. Le symbole \b correspond à la chaîne vide au bord d’un mot, et \B correspond à la chaîne vide à condition qu’elle ne soit pas au bord d’un mot.

Une expression régulière peut être suivie d’un opérateur de répétition parmi plusieurs :

? L’élément précédent est facultatif et correspond au plus une fois.
* L’élément précédent correspondra zéro fois ou plus.
+ L’élément précédent correspondra une fois ou plus.
{n} L’élément précédent est apparié exactement n fois.
{n,} L’élément précédent est apparié n fois ou plus.
{n,m} L’élément précédent est mis en correspondance au moins n fois, mais pas plus de m fois.

Deux expressions régulières peuvent être concaténées ; l’expression régulière résultante met en correspondance toute chaîne formée par la concaténation de deux sous-chaînes qui correspondent respectivement aux sous-expressions concaténées.

Deux expressions régulières peuvent être jointes par l’opérateur infixe | ; l’expression régulière résultante correspond à toute chaîne correspondant à l’une ou l’autre des sous-expressions.

La répétition a la priorité sur la concaténation, qui à son tour a la priorité sur l’alternance. Une sous-expression entière peut être mise entre parenthèses pour passer outre ces règles de préséance.

La rétro-référence \n, où n est un chiffre unique, correspond à la sous-chaîne correspondant précédemment à la nième sous-expression entre parenthèses de l’expression régulière.

Dans les expressions régulières de base, les métacaractères ?, +, {, |, (, et ) perdent leur signification particulière ; à la place, utilisez les versions entre parenthèses \ ?, \+, \{, \|, \(, et \).

L’egrep traditionnel ne supportait pas le métacaractère {, et certaines implémentations egrep supportent \{ à la place, donc les scripts portables devraient éviter { dans les motifs egrep et devraient utiliser pour correspondre à un { littéral.

L’egrep du GNU tente de supporter l’usage traditionnel en supposant que { n’est pas spécial s’il serait le début d’une spécification d’intervalle invalide. Par exemple, la commande shell egrep ‘{1’ recherche la chaîne de deux caractères {1 au lieu de signaler une erreur de syntaxe dans l’expression régulière. POSIX.2 autorise ce comportement en tant qu’extension, mais les scripts portables doivent l’éviter.

Variables d’environnement

Le comportement de Grep est affecté par les variables d’environnement suivantes :

Une locale LC_foo est spécifiée en examinant les trois variables d’environnement LC_ALL, LC_foo, LANG, dans cet ordre. La première de ces variables qui est définie spécifie la locale. Par exemple, si la variable LC_ALL n’est pas définie, mais que la variable LC_MESSAGES est définie sur pt_BR, le portugais brésilien est utilisé pour la locale LC_MESSAGES. La locale C est utilisée si aucune de ces variables d’environnement n’est définie, ou si le catalogue de locale n’est pas installé, ou si grep n’a pas été compilé avec le support de la langue nationale (NLS).

GREP_OPTIONS

Cette variable spécifie les options par défaut à placer devant toute option explicite. Par exemple, si GREP_OPTIONS est ‘–binary-files=without-match –directories=skip’, grep se comporte comme si les deux options –binary-files=without-match et –directories=skip avaient été spécifiées avant toute option explicite. Les spécifications des options sont séparées par des espaces. Une barre oblique inverse échappe le caractère suivant, elle peut donc être utilisée pour spécifier une option contenant des espaces ou une barre oblique inverse.

GREP_COLOR

Spécifie le marqueur pour la mise en évidence.

LC_ALL, LC_COLLATE, LANG

Ces variables spécifient la locale LC_COLLATE, qui détermine la séquence de collationnement utilisée pour interpréter les expressions de plage comme .

LC_ALL, LC_CTYPE, LANG

Ces variables spécifient la locale LC_CTYPE, qui détermine le type de caractères, par ex, quels caractères sont des espaces blancs.

LC_ALL, LC_MESSAGES, LANG

Ces variables spécifient la locale LC_MESSAGES, qui détermine la langue que grep utilise pour les messages. La locale C par défaut utilise des messages en anglais américain.

POSIXLY_CORRECT

Si elle est définie, grep se comporte comme POSIX.2 l’exige ; sinon, grep se comporte plutôt comme les autres programmes GNU. POSIX.2 exige que les options qui suivent les noms de fichiers soient traitées comme des noms de fichiers ; par défaut, ces options sont permutées en tête de la liste des opérandes et sont traitées comme des options. De plus, POSIX.2 exige que les options non reconnues soient diagnostiquées comme « illégales », mais comme elles ne sont pas vraiment contre la loi, le défaut est de les diagnostiquer comme « invalides ». POSIXLY_CORRECT désactive également _N_GNU_nonoption_argv_flags_, décrit ci-dessous.

_N_GNU_nonoption_argv_flags_

(Ici, N est l’ID numérique du processus de grep.) Si le ième caractère de la valeur de cette variable d’environnement est 1, ne pas considérer le ième opérande de grep comme une option, même s’il semble en être une. Un interpréteur de commandes peut placer cette variable dans l’environnement pour chaque commande qu’il exécute, en spécifiant quelles opérandes sont les résultats de l’expansion des caractères génériques des noms de fichiers et ne doivent donc pas être traitées comme des options. Ce comportement n’est disponible qu’avec la bibliothèque GNU C, et seulement lorsque POSIXLY_CORRECT n’est pas défini.

Exemples

egrep "support|help|windows" myfile.txt

Recherche de motifs d’aide au support et de fenêtres dans le fichier monfichier.txt.

egrep '^+$' myfile.txt

Correspondance de toutes les lignes de monfichier.txt qui commencent une ligne par un mot alphabétique qui termine également la ligne.

egrep -c '^begin|end$' myfile.txt

Compter le nombre de lignes dans monfichier.txt qui commencent par le mot « début » ou se terminent par le mot « fin ».

fgrep – Filtrer le texte qui correspond à une chaîne de caractères fixes.
grep – Filtrer le texte qui correspond à une expression régulière.
sed – Un utilitaire pour filtrer et transformer le texte.
sh – L’interpréteur de commandes du Bourne shell.

.

Laisser un commentaire

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