Recherche de site Web

Exemples de commandes grep sous Linux


Grep est une commande utile pour vous aider à rechercher et trouver rapidement le contenu d'un fichier.

"Tout est un fichier sous Linux" et c'est la raison pour laquelle la plupart des utilisateurs de Linux passent beaucoup de temps à bricoler le contenu du fichier.

C'est là que l'importance de la commande grep joue un rôle crucial en vous permettant de rechercher et faire correspondre des modèles dans des fichiers texte ou d'obtenir un résultat.

Donc, dans ce tutoriel, je vais vous expliquer tous les éléments essentiels nécessaires pour apprendre la commande grep :

  • La syntaxe de base et les indicateurs populaires de la commande

  • Exemples pratiques de la commande

  • Questions pratiques pour la commande grep

Voici comment utiliser la commande grep

Pour utiliser la commande grep, il est important de connaître la syntaxe.

Voici donc la syntaxe de base de la commande grep :

grep [OPTIONS] PATTERN <Filename>

Ici,

  • [OPTIONS] : en utilisant l'ensemble d'options donné, vous pouvez modifier le comportement par défaut de la commande grep, par exemple en utilisant le -i qui permet une recherche insensible à la casse.

  • PATTERN : c'est ici que vous spécifiez le texte que vous recherchez à partir du fichier ou de la sortie de la commande. Il peut également s'agir d'une expression régulière pour des modèles plus complexes.

  •  : Ici, vous spécifiez le fichier dans lequel vous souhaitez rechercher et si vous ne spécifiez aucun fichier, la recherche sera effectuée à partir de l'entrée standard.

Jetons maintenant un coup d'œil à quelques options couramment utilisées avec la commande grep :

-i

Ignore le respect de la casse dans la recherche.

-v

Imprime des lignes qui ne correspondent pas au motif.

-n

Affiche le numéro de ligne de chaque ligne correspondante.

-w

Correspond uniquement à des mots entiers, pas à des parties de mots.

-c

Compte le nombre de lignes correspondantes, n'imprime pas les lignes.

-r

Recherche récursive dans les répertoires.

-A n

Imprime n lignes après chaque ligne correspondante.

-B n

Imprime n lignes avant chaque ligne correspondante.

-C n

Imprime n lignes avant et après chaque ligne correspondante.

-f Filename

Lit les modèles de recherche à partir d’un fichier, un par ligne.

-o

Imprime uniquement la partie correspondante de la ligne.

Vous vous demandez peut-être : que se passe-t-il lorsque vous utilisez la commande grep sans aucune option ? Eh bien, il imprime simplement les lignes contenant le motif.

Par exemple, ici, je souhaite rechercher le mot-clé error dans le fichier nommé error.log , et sans aucune option supplémentaire, cela m'a donné ce résultat :

As-tu vu ça? Il met en évidence le motif trouvé et imprime également les lignes contenant le motif.

Pour rendre ce tutoriel facile à suivre, j'utiliserai un exemple de fichier nommé error.log qui comprend les lignes suivantes :

This is a log file with various messages.
An error occurred at 10:00 AM.
The system encountered an unexpected issue.
Everything is working normally now.
Another error message at 11:30 AM.
Warning: Please check disk usage.
Log closed at 12:00 PM

Exemples pratiques de la commande grep

Dans cette section, je présente divers exemples de la commande grep afin que vous puissiez avoir une meilleure idée de la façon dont vous pouvez utiliser la commande grep.

1. Recherche insensible à la casse

Par défaut, les modèles de commande grep sont sensibles à la casse et, pour la plupart, cela fonctionne bien, mais vous souhaiterez peut-être désactiver la sensibilité à la casse.

Pour ce faire, vous pouvez utiliser l'indicateur -i comme indiqué ici :

grep -i PATTERN Filename

Pour démontrer cela, j'utiliserai ERROR comme modèle de recherche, et il affichera les modèles correspondants quelle que soit la sensibilité à la casse :

grep -i ERROR error.log

2. Afficher n lignes avant et après les lignes correspondantes

Par défaut, la commande grep n'imprime que les lignes correspondantes, mais vous souhaitez parfois connaître le contexte des lignes correspondantes. Vous imprimez donc les lignes avant et après les lignes correspondantes.

Imprimer n lignes avant les lignes correspondantes

Pour imprimer n nombre de lignes avant les lignes correspondantes, vous utilisez l'indicateur -B et spécifiez le nombre de lignes à imprimer comme indiqué ici :

grep -B <number_of_lines> PATTERN Filename

Par exemple, ici, j'ai imprimé la ligne avant chaque ligne correspondante :

grep -B 1 error error.log 

Imprimer n lignes après les lignes correspondantes

Pour imprimer le nombre n de lignes après les lignes correspondantes, vous utilisez l'indicateur -A et spécifiez le nombre de lignes comme indiqué ici :

grep -A <number_of_lines> PATTERN Filename

Si je souhaite imprimer une ligne après les lignes correspondantes, j'utiliserai ce qui suit :

grep -A 1 error error.log

Imprimer n lignes avant et après les lignes correspondantes

Si vous souhaitez imprimer des lignes avant et après, alors vous utilisez l'indicateur -C et spécifiez le nombre de lignes à imprimer comme indiqué ici :

grep -C <number_of_lines> PATTERN Filename

Disons que je souhaite afficher 1 ligne avant et 1 ligne après la ligne du motif correspondant, alors j'utiliserai ce qui suit :

grep -C 1 error error.log

3. Afficher les lignes qui ne correspondent pas au motif

La plupart du temps, vous utiliserez la commande grep pour faire correspondre des modèles, mais elle vous permettra également d'inverser les résultats de la recherche.

En termes simples, vous spécifiez le terme de recherche, et il imprimera les lignes qui ne correspondent pas au modèle donné et à cette fin, vous utilisez l'indicateur -v comme indiqué ici :

grep -v PATTERN Filename

Par exemple, si je souhaite imprimer chaque ligne qui ne contient pas le terme error, j'utiliserai ce qui suit :

grep -v error error.log

4. Afficher le nombre de lignes correspondantes

Pour afficher le nombre de lignes correspondantes, il vous suffit d'utiliser le flag -n comme indiqué :

grep -n PATTERN Filename

5. Afficher le nombre total de résultats correspondants

Si vous souhaitez connaître le nombre de résultats correspondants, vous pouvez utiliser l'indicateur -c comme indiqué :

grep -c PATTERN Filename

Par exemple, ici, je voulais savoir combien de fois le terme error est mentionné dans le fichier error.log, j'ai donc utilisé la commande suivante :

grep -c error error.log

6. Rechercher un modèle dans plusieurs fichiers

Si vous souhaitez rechercher un modèle à partir de plusieurs fichiers, il vous suffit alors d'ajouter plusieurs fichiers à rechercher, comme indiqué ici :

grep PATTERN File1 File2

Par exemple, ici, j'ai recherché la chaîne error à partir de deux fichiers : error.log et error.txt et cela m'a donné le résultat suivant :

grep error error.log error.txt

7. Modèle de recherche dans chaque fichier du répertoire

Si vous souhaitez rechercher un modèle spécifique dans chaque fichier présent dans le répertoire, vous pouvez utiliser la commande grep de manière récursive et elle recherchera le modèle donné dans chaque fichier présent dans ce répertoire spécifique.

Pour activer la recherche récursive, utilisez l'indicateur -r comme indiqué :

grep -r PATTERN <Directory or path to directory>

Par exemple, ici, j'ai recherché la chaîne error dans le répertoire courant :

grep -r error .

8. Recherchez le mot exact

Par défaut, la commande grep imprimera tous les modèles correspondants, ce qui n'est pas toujours ce que vous souhaitez. Cela semble étrange ? Permettez-moi de vous expliquer.

Supposons que vous souhaitiez rechercher le terme Orange mais si le fichier spécifique contient également le terme Oranges alors la ligne contenant le terme Oranges sera également affiché comme sortie.

Pour surmonter ce problème, vous pouvez utiliser l'option -w et spécifier le modèle :

grep -w PATTERN Filename

Par exemple, ici, j'ai l'intention de trouver le terme err donc j'utiliserai l'indicateur -w et je vous montrerai également la différence entre ce qui se passe lorsque vous n'utilisez pas il.

grep -w err error.log

Lorsque j'ai utilisé l'indicateur -w pour trouver la chaîne err, il n'a renvoyé aucun résultat, car elle n'existe pas.

Mais lors de la deuxième tentative où j'ai supprimé l'indicateur -w, il a renvoyé deux résultats affichant un contenu où le modèle de chaîne fait partie d'une autre chaîne (non séparée).

9. Utilisez le modèle regex pour la recherche avancée

Si la recherche normale ne rend pas justice, vous pouvez utiliser le modèle regex (séquence de caractères) pour avoir un meilleur contrôle sur votre recherche. Vous pouvez utiliser l'indicateur -e pour utiliser le modèle regex, tandis que -E vous permet d'utiliser l'expression régulière étendue :

grep -e/-E PATTERN Filename

Par exemple, j'ai utilisé ici l'expression régulière étendue pour trouver deux voyelles utilisées ensemble dans le fichier :

grep -e '[aeiouAEIOU]{2}' error.log

Lecture suggérée 📖

10. Spécifiez plusieurs modèles à l'aide de l'opérateur OR

Vous pouvez utiliser l'opérateur OR pour spécifier plusieurs modèles, ce qui est très utile lorsque vous souhaitez rechercher efficacement plusieurs modèles.

Pour spécifier plusieurs modèles, utilisez l'opérateur OR (|) de la manière suivante :

grep 'PATTERN_1\|PATTERN_2' Filename
💡
Vous pouvez appuyer sur la touche Shift + Backslash pour obtenir l'opérateur OR.

Disons que je souhaite rechercher deux modèles : erreur et S'il vous plaît, j'utiliserai alors ce qui suit :

grep 'error\|Please' error.log

Questions pratiques 📓

La pratique est la meilleure façon d'apprendre, et c'est pourquoi je suis sur le point de partager quelques questions pratiques pour la commande grep.

Vous pouvez utiliser le fichier error.log que j'ai mentionné au début de ce guide pour résoudre les questions suivantes :

  1. Recherchez la chaîne error dans chaque fichier présent dans votre répertoire de travail.

  2. Recherchez les lignes qui ne contiennent pas le terme succès.

  3. Recherchez les lignes dans un fichier qui contiennent erreur ou problème.

  4. Recherchez le terme log en désactivant la recherche sensible à la casse et en redirigeant la sortie vers un fichier.

  5. Comment imprimer uniquement les 2 derniers résultats en ignorant tout le reste ? (Indice : utilisez la commande tail)

Si vous rencontrez des difficultés pour résoudre les problèmes ci-dessus, contactez-nous via les commentaires ou postez votre requête sur notre forum communautaire.

Vous pouvez télécharger une aide-mémoire sur la commande grep pour plus d'exemples et d'informations :

Êtes-vous un utilisateur avancé ? Essayez Ripgrep

La commande ripgrep fait tout ce que fait la commande grep mais présente des avantages supplémentaires tels que des performances et des fonctionnalités, notamment la possibilité de rechercher dans le fichier zip.

Cela paraît bien? Voici comment installer et utiliser ripgrep sous Linux :

De plus, si vous êtes nouveau sur Linux, je vous suggère de consulter également notre tutoriel de commandes pour débutants.

💬Partagez vos réflexions sur la commande, votre expérience avec celle-ci et que préférez-vous comme alternative à grep ?

Articles connexes: