Skip to content

✉️ Discover TinkMail

Powerful email solutions for personal and business use

Get Started Free

Recherche de contenu avec la commande Grep

🎫 Le contenu a été validé le 2023-08-23 pour les plateformes suivantes
✅ Ubuntu 22.10
✅ macOS 13.2.1

La recherche de contenu dans des fichiers est une tâche courante pour les utilisateurs Linux. Par exemple, vous pourriez vouloir trouver tous les fichiers qui contiennent un mot ou une phrase spécifique. C'est très utile lorsque vous recherchez une configuration spécifique ou un appel de méthode dans une base de code volumineuse.

grep est un utilitaire en ligne de commande utilisé dans les systèmes Linux pour rechercher des motifs spécifiques dans le contenu des fichiers. C'est un outil puissant qui permet aux utilisateurs de rechercher des chaînes de texte, des expressions régulières ou des motifs dans un ou plusieurs fichiers. grep est couramment utilisé en conjonction avec d'autres commandes pour filtrer et manipuler des données. Il est également disponible sur d'autres plateformes comme Windows et macOS.

Dans ce tutoriel, nous vous montrerons comment utiliser la commande grep à travers des exemples pratiques et des explications détaillées des options les plus courantes.

Comment utiliser la commande Grep

La syntaxe de base de la commande grep est la suivante :

bash
grep [OPTIONS] MOTIF [FICHIER...]

La commande grep recherche un motif dans un ou plusieurs fichiers. Si le motif est trouvé, elle affiche les lignes correspondantes. Si aucun fichier n'est spécifié, grep lit depuis l'entrée standard.

Supposons que vous ayez un fichier nommé file.txt avec le contenu suivant :

This is a test file.
It has some text in it.
Another line of text.

Pour rechercher le mot text dans le fichier file.txt, vous exécuteriez la commande suivante :

bash
> grep test file.txt

It has some text in it.

La sortie montre la ligne qui contient le mot test.

Si vous voulez afficher le contexte de la correspondance, vous pouvez utiliser l'option -C suivie du nombre de lignes à afficher avant et après la correspondance :

bash
> grep -C 1 test file.txt

This is a test file.
It has some text in it.
Another line of text.

La sortie montre la ligne qui contient le mot test et 1 ligne avant et après.

S'il y a plusieurs résultats, la sortie sera séparée par --. Par exemple :

bash
> grep -C 1 xxx file.txt

This is a test file.
It has some text in it.
Another line of text.
--
This is a test file.
It has some text in it.
Another line of text.

Options de la commande Grep

La commande grep est fournie avec beaucoup d'options qui vous permettent de personnaliser la sortie et de rechercher des motifs spécifiques. Dans cette section, nous vous montrerons les options les plus courantes.

Ignorer la casse

Par défaut, grep est sensible à la casse. Cela signifie que si vous recherchez le mot text, il ne correspondra pas à Text ou TEXT.

Pour rendre grep insensible à la casse, utilisez l'option -i :

bash
> grep -i TEXT file.txt

It has some text in it.

Inverser la correspondance

Pour inverser la correspondance, utilisez l'option -v. Elle affichera toutes les lignes qui ne correspondent pas au motif :

bash
> grep -v text file.txt

This is a test file.
Another line of text.

Afficher les numéros de ligne

Pour afficher les numéros de ligne des lignes correspondantes, utilisez l'option -n :

bash
> grep -n text file.txt

2:It has some text in it.

Afficher uniquement la partie correspondante

Pour afficher uniquement la partie correspondante de la ligne, utilisez l'option -o :

bash
> grep -o text file.txt

text

Afficher uniquement les noms de fichiers

Pour afficher uniquement les noms de fichiers qui correspondent au motif, utilisez l'option -l :

bash
> grep -l text file.txt

file.txt

Afficher uniquement le nombre

Pour afficher uniquement le nombre de lignes correspondantes, utilisez l'option -c :

bash
> grep -c text file.txt

1

Rechercher récursivement

En plus de rechercher dans un seul fichier, vous pouvez également rechercher récursivement dans un répertoire et ses sous-répertoires en utilisant l'option -r :

bash
> grep -r text .

file.txt:It has some text in it.

Rechercher plusieurs motifs

Pour rechercher plusieurs motifs, utilisez l'option -e suivie du motif :

bash
> grep -e text -e line file.txt

It has some text in it.
Another line of text.

Notez que les motifs sont mis en correspondance en utilisant l'opérateur logique OU, ce qui signifie que si l'un des motifs correspond, la ligne sera affichée.

Exclure des fichiers

Pour exclure les fichiers qui correspondent à un motif spécifique, utilisez l'option --exclude :

bash
> grep --exclude=*.txt text .

Vous pouvez également utiliser l'option --exclude-dir pour exclure des répertoires :

bash
> grep --exclude-dir=dir text .

Notez que les valeurs de --exclude et --exclude-dir sont des expressions glob qui sont mises en correspondance avec les noms de fichiers, vous pouvez utiliser * pour correspondre à n'importe quel nombre de caractères et ? pour correspondre à un seul caractère.

Utiliser des expressions régulières

grep prend en charge les expressions régulières. Pour utiliser des expressions régulières, utilisez l'option -E :

bash
> grep -E 't.xt' file.txt

It has some text in it.

Notez que le point dans l'expression régulière correspond à n'importe quel caractère. Ainsi, t.xt correspond à text.

Exemples courants de commandes Grep

Dans cette section, nous vous montrerons quelques exemples pratiques d'utilisation de la commande grep.

Rechercher un mot dans un fichier

Pour rechercher un mot dans un fichier, utilisez la commande suivante :

bash
> grep -n -C 2 -i word file.txt

Rechercher un mot dans un répertoire spécifique

Pour rechercher un mot dans un répertoire spécifique, utilisez la commande suivante :

bash
> grep -r -n -i word /path/to/directory

C'est utile, par exemple, vous pourriez vouloir rechercher un nom de variable spécifique dans le répertoire node_modules, ou vous pourriez vouloir vérifier si une configuration spécifique est utilisée dans votre projet.

Rechercher et exclure des répertoires

Pour rechercher un mot et exclure des répertoires, utilisez la commande suivante :

bash
> grep -r -n -i --exclude-dir=dir1 --exclude-dir=dir2 word /path/to/directory

Par exemple, vous pourriez vouloir rechercher un mot dans un répertoire de projet mais exclure le répertoire node_modules.

Conclusion

Dans ce tutoriel, nous vous avons montré comment utiliser la commande grep. Vous pouvez maintenant rechercher des motifs spécifiques dans des fichiers et des répertoires. Pour en savoir plus sur la commande grep, visitez la documentation officielle.