📖 Chapitre 43/45 — Linux : Les commandes Voir le sommaire →
← Retour
Informatique

grep - chercher du texte comme un pro

Cédrix · 06/06/2026
Modifié le 6 juin 2026 à 09h51

Imaginez que vous avez un fichier de 10 000 lignes et que vous cherchez toutes les erreurs. Vous n’allez pas faire défiler à la main. C’est exactement pour ça que grep existe.

grep lit un fichier (ou plusieurs), et ne vous montre que les lignes qui contiennent ce que vous cherchez. Simple. Rapide. Puissant.


La forme de base

grep "ce que je cherche" mon_fichier.txt

Rien de plus. Vous tapez ça, vous obtenez toutes les lignes qui contiennent votre motif.

Exemple concret : vous avez un fichier de logs et vous voulez voir les erreurs.

grep "ERREUR" app.log
[09:12] ERREUR Timeout sur la base de données
[09:13] ERREUR Impossible de se connecter à PostgreSQL
[11:30] ERREUR Clé API invalide pour le service mail

Seulement les erreurs, rien d’autre. Les centaines de lignes INFO ont disparu.


Les options qui changent tout

Les options se placent entre grep et le motif. Elles se combinent librement : -in c’est la même chose que -i -n.

-i — se fiche des majuscules

grep -i "python" langages.txt

Sans -i, Python et python seraient deux choses différentes. Avec -i, grep les traite pareil. Pratique quand vous ne savez pas comment le texte est écrit.

Python - langage interprété, très populaire en data science
python2 - ancienne version, dépréciée depuis 2020

-n — savoir où c’est

grep -n "def" script.py

Ajoute le numéro de ligne devant chaque résultat. Indispensable pour ensuite aller directement à la bonne ligne dans votre éditeur.

2:def somme_pairs(liste):
7:def factorielle(n):

-v — l’inverse

grep -v "INFO" app.log

Affiche tout sauf ce qui correspond. Dans un fichier de logs, c’est parfait pour éliminer le bruit et ne garder que les lignes importantes.

[09:12] ERREUR Timeout sur la base de données
[10:02] WARN  Mémoire disponible inférieure à 20%
[11:30] ERREUR Clé API invalide

-c — juste un chiffre

grep -c "import" main.py

Ne vous montre pas les lignes — juste leur nombre. Utile pour des stats rapides ou vérifier si un motif est présent.

14

-r — dans tout un dossier

grep -r "password" ./config

Cherche récursivement dans tous les fichiers du dossier. Le résultat inclut le nom du fichier avant chaque ligne trouvée.

config/db.ini:password = secret123
config/mail.ini:smtp_password = xxxxxxxx

Conseil : combinez presque toujours -r avec -n pour avoir les numéros de ligne : grep -rn "motif" .


-l — juste les noms de fichiers

grep -rl "TODO" ./src

Quand vous voulez savoir dans quels fichiers se trouve un motif, pas les lignes elles-mêmes. Très utile dans un gros projet.

src/auth.py
src/utils.py
src/models/user.py

-A, -B, -C — voir le contexte

Une erreur sans contexte, ça ne sert à rien. Ces options affichent des lignes autour du résultat.

grep -A 3 "Exception" app.log   # 3 lignes APRÈS
grep -B 2 "Exception" app.log   # 2 lignes AVANT
grep -C 2 "Exception" app.log   # 2 lignes des deux côtés
Processing request id=9821
--
NullPointerException: object is null
  at line 42 in handler.py
  Rolling back transaction...
  Sending error response to client

Combiner les options

C’est là que grep devient vraiment efficace. Quelques combos du quotidien :

# Chercher "host" sans se soucier de la casse, avec numéros de ligne
grep -in "host" config.ini

# Tous les fichiers d'un projet contenant "error" (insensible)
grep -ri "error" .

# Les fichiers qui contiennent une TODO, avec leur numéro de ligne
grep -rn "TODO" ./src

# Tout sauf les commentaires dans un fichier Python
grep -v "^#" script.py

Le pipe — grep avec les autres commandes

grep devient encore plus fort quand il reçoit la sortie d’une autre commande.

# Quels processus Python tournent en ce moment ?
ps aux | grep "python"

# Chercher dans l'historique de vos commandes
history | grep "docker"

# Lister les fichiers .py d'un dossier
ls -la | grep ".py"

Le | envoie la sortie de la commande de gauche comme entrée à grep. C’est un des fondamentaux du terminal.


Les expressions régulières

grep supporte les regex, ce qui permet des recherches bien plus précises.

Les ancres ^ et $

^ signifie “début de ligne”, $ signifie “fin de ligne”.

# Lignes qui commencent par un commentaire Python
grep "^#" script.py

# Lignes qui finissent par un point-virgule
grep ";$" code.js

# Lignes vides
grep "^$" fichier.txt

Les classes [ ]

# Lignes contenant un chiffre
grep "[0-9]" fichier.txt

# Lignes contenant une voyelle minuscule
grep "[aeiou]" fichier.txt

Le ou logique avec -E

L’option -E active les regex étendues, ce qui débloque le | (ou), +, ?, les groupes ( ).

# Erreurs ET avertissements en une seule commande
grep -E "ERREUR|WARN" app.log

# http ou https
grep -E "https?" urls.txt

# Lignes contenant "error" ou "exception" (insensible)
grep -iE "error|exception" app.log

Petite mise en pratique

Voici quelques exercices pour ancrer tout ça. La réponse est juste en dessous de chaque question — essayez d’abord sans regarder.


Exercice 1 — Débutant

Vous avez un fichier access.log. Vous voulez voir toutes les lignes contenant 404.

Voir la réponse
grep "404" access.log

Exercice 2 — Débutant

Même fichier. Cette fois vous voulez les lignes 404, avec leur numéro de ligne.

Voir la réponse
grep -n "404" access.log

Exercice 3 — Intermédiaire

Vous voulez compter combien de requêtes ont abouti à une erreur 500 dans ce fichier.

Voir la réponse
grep -c "500" access.log

Exercice 4 — Intermédiaire

Dans un projet, vous cherchez tous les fichiers qui contiennent le mot deprecated, sans tenir compte de la casse.

Voir la réponse
grep -ril "deprecated" .

-r pour récursif, -i pour la casse, -l pour n’afficher que les noms de fichiers.


Exercice 5 — Avancé

Vous voulez voir toutes les lignes d’un fichier server.log qui contiennent ERROR ou CRITICAL, avec 2 lignes de contexte autour.

Voir la réponse
grep -E -C 2 "ERROR|CRITICAL" server.log

Cheatsheet

Commande Ce qu’elle fait
grep "motif" fichier Recherche de base
grep -i "motif" fichier Insensible à la casse
grep -n "motif" fichier Avec numéros de ligne
grep -v "motif" fichier Inverser (exclure)
grep -c "motif" fichier Compter les lignes
grep -r "motif" dossier/ Récursif dans un dossier
grep -l "motif" *.txt Noms de fichiers uniquement
grep -w "mot" fichier Mot entier (pas “moteur”)
grep -A n "motif" fichier n lignes après
grep -B n "motif" fichier n lignes avant
grep -C n "motif" fichier n lignes des deux côtés
grep -E "a\|b" fichier Regex étendue (ou logique)
cmd \| grep "motif" Filtrer la sortie d’une commande

Pour aller plus loin

  • grep -o — n’affiche que la partie du texte qui correspond, pas la ligne entière. Pratique pour extraire des IPs, des emails, des nombres.
  • grep -m n — s’arrête après n résultats. Utile sur de très gros fichiers.
  • grep --color — colorie les correspondances dans le terminal. Souvent activé par défaut.
  • egrep et fgrep — des variantes de grep : egrep équivaut à grep -E, fgrep cherche des chaînes fixes (sans regex).
  • ripgrep (rg) — un grep beaucoup plus rapide, idéal pour chercher dans de gros projets. La syntaxe est quasi identique.

La documentation complète : man grep dans votre terminal.

Partager : ✉ Mail X in 🐘
Commentaires

Aucun commentaire pour l'instant. Soyez le premier !

Laisser un commentaire
Un code de vérification sera envoyé à votre adresse email.