Commande Linux Egrep avec des exemples

Commande Linux Egrep avec des exemples
La commande egrep appartient à la famille de la commande grep qui est utilisée pour la recherche de motifs dans 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, la ligne à ligne et imprime la (s) ligne (s) qui contiennent la chaîne de recherche / expression régulière. Dans cet article, nous expliquerons 15 exemples utiles des commandes Egrep qui aideront les débutants et même les experts à effectuer des recherches significatives à Linuxwe ont effectué ces exemples sur un système de Debian 10 Buster, mais ils peuvent être facilement reproduits sur la plupart des distros de 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 que vous souhaitez rechercher et le nom de fichier dans lequel vous souhaitez rechercher cette chaîne. Le résultat affiche ensuite la ligne entière contenant la chaîne recherchée.

Syntaxe:

$ Egrep «Search_String» Nom de fichier

Exemple:

$ egrep debian échantillon.SMS

Dans cet exemple, j'ai recherché le mot «Debian» dans le fichier texte spécifié. Vous pouvez voir comment les résultats affichent toute la ligne 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. Il vous suffit d'être un peu plus précis pour fournir un «modèle» pour les fichiers recherchés. Cela deviendra plus clair avec l'exemple que nous présenterons.

Syntaxe:

$ egrep "Search_string" filename_pattern

Exemple:

Ici, nous rechercherons le mot «Debian» dans tous les .Fichiers Txt en spécifiant le modèle de nom de fichier comme suit:

$ Egrep «Debian» *.SMS

La commande a imprimé toutes les lignes, ainsi que les noms de fichiers qui contiennent le mot «Debian» de tous les .Fichiers TXT dans le répertoire actuel.

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

Lorsque vous souhaitez rechercher une chaîne dans tous les fichiers d'un répertoire et de ses sous-répertoires, vous pouvez le faire en utilisant le drapeau -r avec la commande Egrep.

Syntaxe:

$ egrep -r "search_string" *

Exemple:

Dans cet exemple, je recherche le mot «échantillon» dans les fichiers de l'ensemble du répertoire actuel (téléchargements).

$ egrep -r "échantillon" *

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

Exemple 4: effectuer une recherche insensible à la casse

Avec l'indicateur -i, vous pouvez utiliser la commande egrep pour imprimer les résultats en fonction d'une chaîne de recherche sans avoir à vous soucier de son cas.

Syntaxe:

$ Egrep -i "Search_String" 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, indépendamment de son cas.

$ Egrep -i "Search_String" Nom de fichier

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

Exemple 5: Recherche d'une chaîne en tant que mot complet et non comme sous-chaîne

Lorsque vous recherchez normalement une chaîne via Egrep, il imprime tous les mots qui contiennent la chaîne en tant que sous-chaîne. Par exemple, la recherche de la chaîne «On» imprimera tous les mots contenant la chaîne «sur» 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 comme sous-chaîne, vous pouvez utiliser le drapeau -W avec Egrep.

Syntaxe:

$ egrep -w nom de fichier «search_string»

Exemple:

Ici, je recherche la chaîne «ON» dans un exemple de fichier:

$ egrep -i «on» échantillon.SMS

Vous pouvez voir dans la sortie ci-dessus, qu'il contient aussi le mot «seulement». Cependant, ce n'est pas ce que je veux car je cherche exclusivement le mot «sur». Donc, c'est la commande que j'utiliserai à la place:

$ Egrep -iw «ON» SampleFile.SMS

Maintenant, mes résultats de recherche n'incluent que les lignes qui contiennent le mot «ON» comme un mot entier.

Exemple 6: Impression uniquement les noms de fichiers qui contiennent la chaîne

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

Syntaxe:

$ egrep -l "search_string" filename_pattern

Exemple:

Ici, je recherche le «échantillon» de la chaîne dans tous les .Fichiers TXT dans le répertoire actuel:

$ egrep -l échantillon *.SMS

Les résultats de la recherche impriment uniquement le nom des fichiers contenant la chaîne spécifiée.

Exemple 7: Impression uniquement la chaîne de recherche à partir 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 où il apparaît dans le fichier spécifié.

Syntaxe:

$ egrep -o "search_string" nom de fichier

Exemple:

Dans cet exemple, je cherche le mot «ceci» dans mon fichier.

$ egrep -o Cet échantillon.SMS

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

Exemple 8: Affichage de 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 utile dans le sens où il peut être utilisé pour afficher la ligne contenant la chaîne de recherche et également un nombre spécifique de lignes avant, après et entourant.

Ceci est l'exemple de fichier texte que j'utiliserai pour expliquer les exemples à venir:

N Nombre de lignes après la chaîne de recherche:

L'utilisation de l'indicateur A de la manière suivante affichera la ligne contenant la chaîne de recherche et le nombre n nombre de lignes après:

$ egrep -a nom de fichier "search_string"

Exemple:

$ egrep -a 2 "échantillon".SMS

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 le nombre n nombre de lignes avant:

$ egrep -b nom de fichier "search_string"

Exemple:

$ egrep -b 2 "échantillon".SMS

N Nombre de lignes avant la chaîne de recherche:

L'utilisation de l'indicateur C de la manière suivante affichera la ligne contenant la chaîne de recherche, et n nombre de lignes avant et après:

$ egrep -c nom de fichier "search_string"

Exemple:

$ egrep -c 2 "échantillon".SMS

Exemple 9: correspondant à l'expression régulière dans les 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" nom de fichier

Laissez-nous expliquer comment vous pouvez utiliser des expressions régulières dans votre recherche Egrep:

Opérateur de répétition Utiliser
? L'article précédent avant ? est facultatif et correspond au maximum une fois une fois
* L'article précédent avant * sera égalé zéro ou plus de fois
+ L'article précédent avant + sera égalé une ou plusieurs fois
n L'article précédent est exactement adapté n nombre de fois.
n, L'article précédent est apparié n ou plus
, m L'article précédent est apparié maximum M fois
n, m L'article précédent est apparié au moins n fois mais pas plus que m fois

Exemple:

Dans l'exemple suivant, les lignes contenant l'expression suivante sont appariées:

en commençant par «Gnome» et en se terminant à des «programmes»

Exemple 10: mettant en surbrillance 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 de recherche / modèle surligné dans les résultats:

$ sudo export grep_options = '- color = auto' grep_color = '100; 8'

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

Exemple 11: effectuer une recherche inverse dans un fichier

Par recherche inverse, nous voulons dire que la commande egrep imprime tout dans le fichier, à l'exception des lignes qui contiennent la chaîne de recherche. Nous utiliserons l'exemple de fichier suivant pour expliquer la recherche inverse via Egrep. Nous avons imprimé le contenu du fichier à l'aide de la commande CAT:

Syntaxe:

$ egrep -v "search_string" nom de fichier

Exemple:

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

$ egrep -v "Two" SampleFile_.SMS

Vous pouvez voir comment la sortie contient tout à partir de l'exemple de fichier à l'exception de la deuxième ligne qui contenait la chaîne de recherche «deux».

Exemple 12: effectuer une recherche inverse basée sur plusieurs critères / modèle de recherche

Avec l'indicateur -v, vous pouvez également faire de la commande Egrep pour effectuer une recherche inversée en fonction de plusieurs chaînes / motifs de recherche.

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

Syntaxe:

$ egrep -v -e "search_string" / "modèle" -e "search_string" / "modèle"
… nom de fichier

Exemple:

À partir de l'exemple de fichier que nous avons mentionné, nous voulons omettre la ou les lignes contenant les mots «un» et «deux» dans la sortie, nous utiliserons donc la commande suivante:

$ egrep -v -e "one" -e "deux" samplefile_.SMS

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

Exemple 13: Impression du nombre de lignes qui correspondent à la chaîne de recherche

Au lieu d'imprimer la chaîne recherchée à partir du fichier ou des lignes la contenant, vous pouvez utiliser la commande egrep pour compter et imprimer le nombre de lignes correspondant à la chaîne. Ce nombre peut être récupéré en utilisant l'indicateur -c avec la commande egrep.

Syntaxe:

$ Egrep -C "Search_string" Nom de fichier

Exemple:

Dans cet exemple, nous utiliserons l'indicateur -c pour compter le nombre de lignes qui contiennent le mot «ceci» dans notre exemple de fichier:

$ egrep -c "this" nom de fichier

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

$ grep -v -c "search_string" nom de fichier

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

Avec l'indicateur -n, vous pouvez faire la commande egrep pour imprimer la ligne correspondante avec le numéro de ligne qui contient la chaîne de recherche.

Syntaxe:

$ grep -n nom de fichier "search_string"

Exemple:

$ grep -n "this" samplefile_.SMS

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

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

Si vous souhaitez 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" nom de fichier

Exemple:

$ grep -o -b "this" samplefile_.SMS

Les résultats de la recherche impriment le décalage d'octet du fichier où le mot de recherche existe.C'é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.