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
- Exemple 2 : Recherche d’une chaîne spécifique dans plusieurs fichiers
- Exemple 3 : Recherche récursive de la chaîne dans tout le répertoire
- Exemple 4 : Effectuer 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
- Exemple 6 : Imprimer seulement les noms de fichiers qui contiennent la chaîne
- Exemple 7 : Imprimer uniquement la chaîne de recherche d’un fichier
- Exemple 8 : Afficher n nombre de lignes avant,après ou autour de la chaîne de recherche
- Exemple 9 : correspondance d’une expression régulière dans des fichiers
- Exemple 10 : mise en évidence de la chaîne de recherche
- Exemple 11 : Exécution d’une recherche inversée dans un fichier
- Exemple 12 : Exécution d’une recherche inversée basée sur plusieurs critères/motifs de recherche
- Exemple 13 : Imprimer le nombre de lignes qui correspondent à la chaîne de recherche
- Exemple 14 : Affichage du numéro de ligne où la chaîne est appariée
- Exemple 15 : Affichage de la position dans le fichier où la chaîne de recherche correspond
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:
Exemple:
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:
Exemple:
Ici, nous allons rechercher le mot « debian » dans tous les fichiers .txt en spécifiant le motif du nom de fichier comme suit :
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:
Exemple:
Dans cet exemple, je recherche le mot « échantillon » dans les fichiers de tout le répertoire courant(Downloads).
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:
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.
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:
Exemple:
Ici je recherche la chaîne « on » dans un fichier échantillon:
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:
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:
Exemple:
Ici je recherche la chaîne « sample » dans tous les fichiers .txt du répertoire courant:
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:
Exemple:
Dans cet exemple, je recherche le mot « This » dans mon fichier.
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:
Exemple:
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 :
Exemple:
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 :
Exemple:
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:
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 :
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:
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:
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:
….. 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:
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:
Exemple:
Dans cet exemple, nous utiliserons le drapeau -c pour compter le nombre de lignes qui contiennent le mot « This » dans notre fichier échantillon :
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 :
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:
Exemple:
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.
Exemple:
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.