La commande egrep appartient à la famille de la commande grep qui est utilisée pour la recherche de motifs sous Linux. Si vous avez utilisé la commande grep, egrep fonctionne de la même manière que grep -E (grep Extended regex’). Egrep scanne un fichier spécifique, ligne par ligne, et imprime la ou les lignes qui contiennent la chaîne de recherche/l’expression régulière. Dans cet article, nous allons expliquer 15 exemples utiles des commandes egrep qui aideront les débutants et même les experts à effectuer des recherches significatives dans LinuxNous avons effectué ces exemples sur un système Debian 10 Buster, mais ils peuvent être facilement reproduits sur la plupart des distros Linux.

Exemple 1 : Recherche d’une chaîne spécifique dans un fichier

C’est l’utilisation la plus courante de la commande egrep. Ce que vous faites, c’est que vous spécifiez une chaîne de caractères que vous voulez rechercher, et le nom du fichier dans lequel vous voulez rechercher cette chaîne. Le résultat affiche alors la ligne entière contenant la chaîne recherchée.

Syntaxe:

$ egrep « search_string » filename

Exemple:

$ egrep debian samplefile.txt

Dans cet exemple, j’ai recherché le mot « debian » dans le fichier texte spécifié. Vous pouvez voir comment les résultats affichent la ligne entière qui contient le mot « debian »:

Exemple 2 : Recherche d’une chaîne spécifique dans plusieurs fichiers

Avec la commande egrep, vous pouvez rechercher une chaîne parmi plusieurs fichiers résidant dans le même répertoire. Vous devez juste être un peu plus spécifique en fournissant un « motif » pour les fichiers recherchés. Cela deviendra plus clair avec l’exemple que nous allons présenter.

Syntaxe:

$ egrep « search_string » filename_pattern

Exemple:

Ici, nous allons rechercher le mot « debian » dans tous les fichiers .txt en spécifiant le motif du nom de fichier comme suit :

$ egrep « debian » *.txt

La commande a imprimé toutes les lignes, ainsi que les noms de fichiers qui contiennent le mot « debian » de tous les fichiers .txt du répertoire courant.

Exemple 3 : Recherche récursive de la chaîne dans tout le répertoire

Lorsque vous voulez rechercher une chaîne dans tous les fichiers d’un répertoire et de ses sous-répertoires, vous pouvez le faire en utilisant l’option -r avec la commande egrep.

Syntaxe:

$ egrep -r « chaîne_de_recherche » *

Exemple:

Dans cet exemple, je recherche le mot « échantillon » dans les fichiers de tout le répertoire courant(Downloads).

$ egrep -r « sample » *

Les résultats contiennent toutes les lignes, ainsi que les noms de fichiers, qui contiennent le mot « sample » de tous les fichiers du répertoire Downloads, et de ses sous-répertoires.

Exemple 4 : Effectuer une recherche insensible à la casse

Avec le drapeau -i, vous pouvez utiliser la commande egrep pour imprimer les résultats basés sur une chaîne de recherche sans avoir à vous soucier de sa casse.

Syntaxe:

$ egrep -i « chaîne_de_recherche » nom_de_fichier

Exemple:

Ici, je recherche le mot « debian » et je veux que les résultats affichent toutes les lignes du fichier qui contiennent le mot « debian » ou « Debian, sans tenir compte de sa casse.

$ egrep -i « search_string » filename

Vous pouvez voir comment le drapeau -i m’a aidé à récupérer toutes les lignes qui contiennent la chaîne de recherche à travers une recherche « insensible » à la casse.

Exemple 5 : Recherche d’une chaîne de caractères comme un mot complet et non comme une sous-chaîne

Lorsque vous recherchez normalement une chaîne de caractères par egrep, il imprime tous les mots qui contiennent la chaîne de caractères comme une sous-chaîne. Par exemple, rechercher la chaîne « on » imprimera tous les mots contenant la chaîne « on » comme  » on », « only », « monitor », « clone », etc. Si vous voulez que les résultats affichent uniquement le mot « on » en tant que mot complet et non en tant que sous-chaîne, vous pouvez utiliser le drapeau -w avec egrep.

Syntaxe:

$ egrep -w « search_string » filename

Exemple:

Ici je recherche la chaîne « on » dans un fichier échantillon:

$ egrep -i « on » samplefile.txt

Vous pouvez voir dans la sortie ci-dessus, qu’elle contient aussi le mot « only ». Cependant, ce n’est pas ce que je veux car je recherche exclusivement le mot « on ». Donc, voici la commande que je vais utiliser à la place:

$ egrep -iw « on » samplefile.txt

Maintenant mes résultats de recherche incluent seulement les lignes qui contiennent le mot « on » comme un mot entier.

Exemple 6 : Imprimer seulement les noms de fichiers qui contiennent la chaîne

Parfois, nous voulons seulement récupérer les noms de fichiers qui contiennent une chaîne spécifique, plutôt que d’imprimer les lignes qui la contiennent. Cela peut être fait en utilisant le drapeau -l (L minuscule) avec la commande egrep.

Syntaxe:

$ egrep -l « search_string » filename_pattern

Exemple:

Ici je recherche la chaîne « sample » dans tous les fichiers .txt du répertoire courant:

$ egrep -l sample *.txt

Les résultats de la recherche n’impriment que le nom des fichiers qui contiennent la chaîne spécifiée.

Exemple 7 : Imprimer uniquement la chaîne de recherche d’un fichier

Au lieu d’imprimer la ligne entière qui contient la chaîne de recherche, vous pouvez utiliser la commande egrep pour imprimer la chaîne elle-même. La chaîne sera imprimée le nombre de fois qu’elle apparaît dans le fichier spécifié.

Syntaxe:

$ egrep -o « search_string » filename

Exemple:

Dans cet exemple, je recherche le mot « This » dans mon fichier.

$ egrep -o This samplefile_.txt

Note : Cette utilisation de la commande est pratique lorsque vous recherchez une chaîne de caractères basée sur un modèle d’expression régulière. Nous expliquerons les expressions régulières en détail dans l’un des prochains exemples.

Exemple 8 : Afficher n nombre de lignes avant,après ou autour de la chaîne de recherche

Parfois, il est très important de connaître le contexte dans un fichier où une chaîne spécifique est utilisée. L’egrep est pratique dans le sens où il peut être utilisé pour afficher la ligne contenant la chaîne de recherche et aussi un nombre spécifique de lignes avant, après et autour de celle-ci.

Voici l’exemple de fichier texte que je vais utiliser pour expliquer les exemples à venir :

N nombre de lignes Après la chaîne de recherche :

L’utilisation du drapeau A de la manière suivante affichera la ligne contenant la chaîne de recherche et le nombre N de lignes après celle-ci:

$ egrep -A <N> « chaîne_de_recherche » filename

Exemple:

$ egrep -A 2 « sample » samplefile.txt

N nombre de lignes Avant la chaîne de recherche:

L’utilisation du drapeau B de la manière suivante affichera la ligne contenant la chaîne de recherche et N nombre de lignes avant celle-ci :

$ egrep -B <N> « chaîne_de_recherche » filename

Exemple:

$ egrep -B 2 « sample » samplefile.txt

N nombre de lignes Avant la chaîne de recherche:

L’utilisation du drapeau C de la manière suivante affichera la ligne contenant la chaîne de recherche, et N nombre de lignes avant et après celle-ci :

$ egrep -C <N> « chaîne_de_recherche » filename

Exemple:

$ egrep -C 2 « sample » samplefile.txt

Exemple 9 : correspondance d’une expression régulière dans des fichiers

La commande egrep devient plus puissante lorsque vous recherchez des expressions régulières au lieu de chaînes de recherche solides dans un fichier.

Syntaxe:

$ egrep « RegularExpressions » filename

Expliquons comment vous pouvez utiliser les expressions régulières dans votre recherche egrep:

.

Opérateur de répétition Utiliser
? L’élément précédent avant ? est facultatif et est apparié au maximum une fois
* L’élément précédent avant * sera apparié zéro fois ou plus
+ L’élément précédent avant + sera apparié une ou plusieurs fois
{n} L’élément précédent est exactement apparié n nombre de fois.
{n,} L’élément précédent est apparié n fois ou plus
{,m} L’élément précédent est apparié au maximum m fois
{n,m} L’élément précédent est apparié au moins n fois mais pas plus de m fois

Exemple :

Dans l’exemple suivant, les lignes contenant l’expression suivante sont mises en correspondance :

commençant par « Gnome » et se terminant par  » programmes »

Exemple 10 : mise en évidence de la chaîne de recherche

Lorsque vous définissez la variable d’environnement GREP_OPTIONS comme ci-dessous, vous obtenez votre sortie avec la chaîne/modèle de recherche mise en évidence dans les résultats :

$ sudo export GREP_OPTIONS=’–color=auto’ GREP_COLOR=’100;8′

Vous pouvez ensuite rechercher la chaîne de caractères de toutes les manières que nous avons décrites dans les exemples de cet article.

Exemple 11 : Exécution d’une recherche inversée dans un fichier

Par recherche inversée, nous entendons que la commande egrep imprime tout dans le fichier, sauf les lignes qui contiennent la chaîne de recherche. Nous allons utiliser l’exemple de fichier suivant pour expliquer la recherche inversée par egrep. Nous avons imprimé le contenu du fichier en utilisant la commande cat:

Syntaxe:

$ egrep -v « search_string » filename

Exemple :

Du fichier exemple que nous avons mentionné, nous voulons omettre la ligne contenant le mot « deux » dans la sortie, donc nous utiliserons la commande suivante:

$ egrep -v « deux » fichier_de_l’échantillon.txt

Vous pouvez voir comment la sortie contient tout du fichier échantillon à l’exception de la deuxième ligne qui contenait la chaîne de recherche « deux ».

Exemple 12 : Exécution d’une recherche inversée basée sur plusieurs critères/motifs de recherche

Avec le drapeau -v, vous pouvez également faire en sorte que la commande egrep effectue une recherche inversée basée sur plus d’une chaîne/motif de recherche.

Nous utiliserons le même fichier exemple que nous avons mentionné dans l’exemple 11 pour expliquer ce scénario.

Syntaxe:

$ egrep -v -e « search_string »/ »pattern » -e « search_string »/ »pattern »
….. filename

Exemple:

Du fichier d’exemple que nous avons mentionné, nous voulons omettre la ou les lignes contenant les mots « un » et « deux » dans la sortie, donc nous utiliserons la commande suivante:

$ egrep -v -e « un » -e « deux » samplefile_.txt

Nous avons fourni deux mots à omettre en utilisant le drapeau -e, donc la sortie apparaîtra comme suit:

Exemple 13 : Imprimer le nombre de lignes qui correspondent à la chaîne de recherche

Au lieu d’imprimer la chaîne recherchée dans le fichier ou les lignes qui la contiennent, vous pouvez utiliser la commande egrep pour compter et imprimer le nombre de lignes correspondant à la chaîne. Ce compte peut être récupéré en utilisant le drapeau -c avec la commande egrep.

Syntaxe:

$ egrep -c « search_string » filename

Exemple:

Dans cet exemple, nous utiliserons le drapeau -c pour compter le nombre de lignes qui contiennent le mot « This » dans notre fichier échantillon :

$ egrep -c « This » filename

Vous pouvez également utiliser ici la fonction de recherche inversée pour compter et imprimer le nombre de lignes qui ne contiennent pas la chaîne de recherche :

$ grep -v -c « chaîne_de_recherche » nom de fichier

Exemple 14 : Affichage du numéro de ligne où la chaîne est appariée

Avec le drapeau -n, vous pouvez faire en sorte que la commande egrep imprime la ligne appariée ainsi que le numéro de ligne qui contient la chaîne de recherche.

Syntaxe:

$ grep -n « chaîne_de_recherche » nom_de_fichier

Exemple:

$ grep -n « Ceci » échantillonfichier_.txt

Vous pouvez voir comment les numéros de ligne sont affichés contre les résultats de la recherche.

Exemple 15 : Affichage de la position dans le fichier où la chaîne de recherche correspond

Si vous voulez connaître la position dans le fichier où la chaîne de recherche existe, vous pouvez utiliser l’indicateur -b avec la commande egrep.

$ grep -o -b « search_string » filename

Exemple:

$ grep -o -b « This » samplefile_.txt

Les résultats de la recherche impriment le décalage en octets du fichier où le mot recherché existe.Ceci était une utilisation détaillée de la commande egrep. En utilisant une combinaison des drapeaux expliqués dans cet article, vous pouvez effectuer des recherches plus significatives et complexes sur vos fichiers.

Laisser un commentaire

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