Aller au contenu
Administration Linux medium

grep : rechercher dans du texte

27 min de lecture

Quand on doit trouver une ligne d'erreur dans un log de plusieurs milliers de lignes, rechercher un mot-clé dans du code source ou filtrer la sortie d'une commande, grep est l'outil incontournable. Simple et puissant, grep permet de rechercher des motifs textuels (simples ou regex) et d'afficher les lignes correspondantes, directement en ligne de commande.

  • Rechercher un motif simple dans un fichier
  • Utiliser les options essentielles -i, -v, -n, -c
  • Afficher le contexte avec -A, -B, -C
  • Utiliser des expressions régulières basiques et étendues (-E)
  • Faire des recherches récursives avec -r

grep fait partie des commandes de traitement de texte sous Linux. Chaque outil a sa spécialité :

CommandeSpécialitéQuand l'utiliser
grepFiltrer des lignes par motifRechercher, filtrer, diagnostiquer
awkTraitement avancé de colonnesCalculs, conditions, formats complexes
sedÉditer du texte en fluxRemplacer, supprimer, insérer
cutExtraire des colonnesFichiers délimités (CSV, TSV)
findRechercher des fichiersTrouver par nom, taille, date
xargsTransformer stdin en argumentsChaîner commandes sur listes

Quand utiliser grep vs awk ?

Situationgrepawk
Rechercher un mot dans un fichiergrep "mot" fichier✅ mais overkill
Ignorer la cassegrep -i "mot"tolower()
Afficher les lignes contenant un pattern✅ Parfait
Extraire une colonne spécifiqueawk '{print $2}'
Compter les occurrences exactes-c compte les lignes
Calculs sur les lignes trouvées
Conditions complexes (ET, OU, IF)⚠️ Limité

Combinaisons fréquentes :

Fenêtre de terminal
# grep + cut : filtrer puis extraire une colonne
grep 'ERROR' app.log | cut -d' ' -f4
# grep + sort + uniq : compter les types d'erreurs
grep 'ERROR' app.log | cut -d':' -f2 | sort | uniq -c
# grep + xargs : agir sur les fichiers contenant un motif
grep -rl 'TODO' src/ | xargs -I{} echo "Fichier à traiter: {}"
# grep + wc : compter les lignes correspondantes
grep -c 'ERROR' *.log | grep -v ':0$'

🧠 Modèle mental — Comment fonctionne grep

grep = Définir l'entrée → Spécifier le motif → Obtenir les lignes correspondantes

Modèle mental grep : Entrée (fichier/stdin) → Motif (texte/regex) → Sortie (lignes filtrées)

Points clés

  • grep filtre les lignes contenant un motif (texte ou regex)
  • Sans fichier, grep lit depuis stdin (pipe)
  • Par défaut, la recherche est sensible à la casse
  • -i pour ignorer la casse, -v pour inverser (lignes sans le motif)
  • -n affiche les numéros de lignes, -c compte les occurrences
  • grep -E (ou egrep) active les regex étendues (|, +, ?, etc.)

Règles d'or

1
Toujours protéger le motif avec des guillemets Évite que le shell interprète les caractères spéciaux (*, ?, |, etc.)
2
Utiliser -E pour les regex avec alternance ou quantificateurs grep basique nécessite d'échapper | + ? (), -E les active directement

Vocabulaire essentiel

-i
Ignorer la casse (case-insensitive)
-v
Inverser : lignes SANS le motif
-n
Afficher les numéros de ligne
-c
Compter les lignes (pas les occurrences)
-r
Recherche récursive dans les dossiers
-l
Afficher uniquement les noms de fichiers
📚 Pour aller plus loin — 6 options avancées
-E
Regex étendues (egrep)
-w
Mot entier uniquement
-o
Afficher uniquement la correspondance
-A N
N lignes après chaque match
-B N
N lignes avant chaque match
-C N
N lignes de contexte (avant et après)

grep lit le fichier ou stdin ligne par ligne, teste si le motif est présent, puis affiche les lignes correspondantes sur stdout.

Fenêtre de terminal
grep [OPTIONS] MOTIF [FICHIER...]

grep propose plusieurs modes selon le type de motif :

ModeCommandeUsageExemple
Texte simplegrepMotifs littérauxgrep "ERROR" log.txt
Regex basique (BRE)grepMétacaractères basiquesgrep "^[0-9]" file
Regex étendue (ERE)grep -E|, +, ?, () sans échappementgrep -E "a|b"
Texte littéralgrep -FDésactive les regexgrep -F "*.txt" file
OptionEffetExemple
-iIgnorer la cassegrep -i "error"
-vInverser (lignes sans le motif)grep -v "DEBUG"
-nAfficher les numéros de lignegrep -n "ERROR"
-cCompter les lignesgrep -c "ERROR"
-lAfficher uniquement les noms de fichiersgrep -l "TODO"
-rRecherche récursivegrep -r "TODO" src/
-wMot entier uniquementgrep -w "port"
-oAfficher uniquement la correspondancegrep -o "[0-9]*"

Pour comprendre le contexte d'une correspondance (crucial pour le débogage) :

OptionEffetExemple
-A NN lignes après (After)grep -A 3 "ERROR"
-B NN lignes avant (Before)grep -B 2 "ERROR"
-C NN lignes avant et après (Context)grep -C 2 "ERROR"
Fenêtre de terminal
# Voir ce qui s'est passé avant et après une erreur
grep -C 3 "Exception" application.log
# Afficher le contexte après chaque erreur (stack trace)
grep -A 10 "ERROR" app.log
PatternSignificationExemple
^motifDébut de lignegrep "^ERROR"
motif$Fin de lignegrep "done$"
.Un caractère quelconquegrep "err.r"
*Zéro ou plus du précédentgrep "ab*c"
[abc]Un parmi a, b ou cgrep "[aeiou]"
[^abc]Aucun parmi a, b ou cgrep "[^0-9]"
\<mot\>Mot entier (BRE)grep "\<port\>"

Avec -E (ou egrep), les métacaractères avancés sont disponibles sans échappement :

PatternSignificationExemple
a|ba OU bgrep -E "ERROR|WARNING"
+Un ou plus du précédentgrep -E "[0-9]+"
?Zéro ou un du précédentgrep -E "colou?r"
(abc)Groupementgrep -E "(ab)+"
{n,m}Entre n et m répétitionsgrep -E "[0-9]{2,4}"
Fenêtre de terminal
# Trouver ERROR ou WARNING ou CRITICAL
grep -E "ERROR|WARNING|CRITICAL" app.log
# Trouver les lignes avec un numéro de 2 à 4 chiffres
grep -E "[0-9]{2,4}" data.txt
# Extraire les adresses IP
grep -oE "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" access.log
Fenêtre de terminal
# Tous les fichiers du dossier courant
grep -r "TODO" .
# Avec numéros de ligne
grep -rn "FIXME" src/
# Uniquement les noms de fichiers
grep -rl "password" /etc/
# Exclure certains dossiers
grep -r "TODO" --exclude-dir={node_modules,.git} .
# Filtrer par extension
grep -r "import" --include="*.py" .
ErreurCauseSolution
Aucun résultatCasse différenteUtiliser -i
Résultats partielsCorrespondance sous-chaîneUtiliser -w pour mot entier
Regex non reconnuegrep basiqueUtiliser -E pour regex étendues
"Binary file matches"Fichier binaire détectéUtiliser -a pour forcer texte
grep se trouve lui-mêmeps | grepAjouter | grep -v grep

Maintenant que vous comprenez la logique de grep, voici seize modèles prêts à l'emploi. Chacun donne sa formule générale et un exemple concret.

Trouver les lignes contenant un mot.

Fenêtre de terminal
grep "MOTIF" <fichier> # formule
grep "ERROR" application.log # exemple
  • MOTIF : texte ou expression régulière à rechercher

Trouver sans distinction majuscules / minuscules.

Fenêtre de terminal
grep -i "MOTIF" <fichier> # formule
grep -i "error" logs.txt # exemple
  • -i : recherche insensible à la casse

Afficher les lignes qui ne contiennent pas le motif.

Fenêtre de terminal
grep -v "MOTIF" <fichier> # formule
grep -v "DEBUG" application.log # exemple
  • -v : inverse la sélection

Compter le nombre de lignes correspondantes.

Fenêtre de terminal
grep -c "MOTIF" <fichier> # formule
grep -c "ERROR" application.log # exemple
  • -c : renvoie uniquement le compte, pas les lignes

Voir à quelles lignes se trouvent les correspondances.

Fenêtre de terminal
grep -n "MOTIF" <fichier> # formule
grep -n "ERROR" application.log # exemple
  • -n : préfixe chaque ligne par son numéro

Voir N lignes après chaque correspondance.

Fenêtre de terminal
grep -A N "MOTIF" <fichier> # formule
grep -A 3 "Exception" error.log # exemple
  • -A N : N lignes après (After)

Voir N lignes avant chaque correspondance.

Fenêtre de terminal
grep -B N "MOTIF" <fichier> # formule
grep -B 2 "FAILURE" job.log # exemple
  • -B N : N lignes avant (Before)

Voir N lignes de part et d'autre de chaque correspondance.

Fenêtre de terminal
grep -C N "MOTIF" <fichier> # formule
grep -C 2 "timeout" network.log # exemple
  • -C N : N lignes de contexte (Context)

Éviter les correspondances partielles.

Fenêtre de terminal
grep -w "MOTIF" <fichier> # formule
grep -w "port" config.conf # exemple
  • -w : impose une frontière de mot

Chercher dans tous les fichiers d'un répertoire.

Fenêtre de terminal
grep -r "MOTIF" <dossier> # formule
grep -r "TODO" ./src/ # exemple
  • -r : descend dans les sous-dossiers

Lister les fichiers contenant le motif, sans afficher les lignes.

Fenêtre de terminal
grep -l "MOTIF" <fichiers> # formule
grep -rl "password" /etc/ # exemple
  • -l : n'affiche que les chemins de fichiers

Chercher plusieurs motifs avec un OU.

Fenêtre de terminal
grep -E "MOTIF1|MOTIF2" <fichier> # formule
grep -E "ERROR|WARNING|CRITICAL" app.log # exemple
  • -E : active les regex étendues
  • | : alternance (OU)

Extraire uniquement la partie correspondante, pas la ligne entière.

Fenêtre de terminal
grep -o "PATTERN" <fichier> # formule
grep -oE "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" access.log # exemple
  • -o : affiche uniquement la correspondance

Ignorer les lignes de commentaires et les lignes vides d'un fichier de configuration.

Fenêtre de terminal
grep -v "^#" <fichier> | grep -v "^$" # formule
grep -v "^#" config.conf | grep -v "^$" # exemple
  • ^# : lignes commençant par #
  • ^$ : lignes vides

Filtrer la sortie d'une autre commande.

Fenêtre de terminal
<commande> | grep "MOTIF" # formule
ps aux | grep nginx # exemple
  • grep filtre ce qui arrive sur son entrée standard

Chercher dans plusieurs fichiers à la fois.

Fenêtre de terminal
grep "MOTIF" <fichier1> <fichier2> ... # formule
grep "server" *.conf # exemple
  • * : joker shell pour cibler plusieurs fichiers

Huit erreurs reviennent constamment avec grep. Pour chacune : la commande piégée, le symptôme, la cause et la correction.

Fenêtre de terminal
grep *.log fichier.txt # ❌ le shell interprète le * avant grep

Symptôme : erreur ou résultats inattendus. Cause : le shell interprète les caractères spéciaux (*, ?, |) avant que grep ne les voie.

Fenêtre de terminal
grep "*.log" fichier.txt # ✅ le motif est protégé
Fenêtre de terminal
grep "error" fichier.log # ❌ ne trouve pas "ERROR" ni "Error"

Symptôme : des lignes manquent dans les résultats. Cause : par défaut, grep est sensible à la casse.

Fenêtre de terminal
grep -i "error" fichier.log # ✅ casse ignorée
Fenêtre de terminal
ps aux | grep nginx # ❌ affiche aussi la ligne du processus "grep nginx"

Symptôme : une ligne parasite contenant grep dans les résultats. Cause : le processus grep apparaît lui-même dans la liste de ps.

Fenêtre de terminal
ps aux | grep nginx | grep -v grep # ✅ on exclut la ligne du grep
Fenêtre de terminal
grep "ERROR|WARNING" fichier.log # ❌ cherche le texte littéral "ERROR|WARNING"

Symptôme : aucun résultat. Cause : en regex basique, le | n'est pas l'alternance — il faut l'échapper ou utiliser -E.

Fenêtre de terminal
grep -E "ERROR|WARNING" fichier.log # ✅ regex étendue
Fenêtre de terminal
grep "prix: 10$" fichier.txt # ❌ le $ est interprété comme « fin de ligne »

Symptôme : résultats inattendus. Cause : $ est un métacaractère de regex.

Fenêtre de terminal
grep -F "prix: 10$" fichier.txt # ✅ -F traite le motif comme du texte littéral
Fenêtre de terminal
grep -c "mot" fichier.txt # ❌ renvoie 2 même si "mot" apparaît 5 fois sur 2 lignes

Symptôme : un compte inférieur au nombre réel d'occurrences. Cause : -c compte les lignes contenant le motif, pas le nombre total de correspondances.

Fenêtre de terminal
grep -o "mot" fichier.txt | wc -l # ✅ compte les occurrences réelles
Fenêtre de terminal
grep "motif" fichier.bin # ❌ affiche "Binary file matches" au lieu du contenu

Symptôme : un message au lieu du résultat. Cause : grep détecte un fichier binaire et n'en affiche pas le contenu.

Fenêtre de terminal
grep -a "motif" fichier.bin # ✅ -a force le traitement comme du texte
Fenêtre de terminal
grep "port" config.conf # ❌ trouve aussi "import", "export", "support"

Symptôme : trop de résultats non pertinents. Cause : grep cherche la sous-chaîne, pas le mot entier.

Fenêtre de terminal
grep -w "port" config.conf # ✅ -w impose le mot entier

Rien ne remplace la pratique. Créez l'environnement de test ci-dessous, puis déroulez les douze étapes. À la fin, nettoyez avec rm -rf ~/grep-lab.

Ce script crée quatre fichiers de test dans ~/grep-lab : un log applicatif, un fichier de configuration, du code source Python et une liste de contacts.

Fenêtre de terminal
# Créer le lab
mkdir -p ~/grep-lab
cd ~/grep-lab
# Fichier de log applicatif
cat > application.log << 'EOF'
2025-01-15 08:00:01 INFO Application démarrée
2025-01-15 08:00:02 DEBUG Connexion base de données établie
2025-01-15 08:01:15 INFO Utilisateur alice connecté
2025-01-15 08:02:30 WARNING Mémoire utilisée: 75%
2025-01-15 08:03:45 ERROR Timeout lors de la requête API
2025-01-15 08:03:46 DEBUG Retry 1/3 en cours...
2025-01-15 08:03:48 ERROR Timeout lors de la requête API
2025-01-15 08:03:49 DEBUG Retry 2/3 en cours...
2025-01-15 08:03:51 INFO Requête réussie après retry
2025-01-15 08:05:00 INFO Utilisateur bob connecté
2025-01-15 08:10:00 WARNING Disque utilisé: 85%
2025-01-15 08:15:00 ERROR Permission denied: /var/data/secret.txt
2025-01-15 08:20:00 INFO Batch job terminé avec succès
EOF
# Fichier de configuration
cat > config.conf << 'EOF'
# Configuration serveur
server.host=localhost
server.port=8080
server.ssl.enabled=true
# Base de données
database.host=db.example.com
database.port=5432
database.name=production
database.user=admin
# Cache
cache.enabled=true
cache.ttl=3600
# Logging
log.level=INFO
log.file=/var/log/app.log
EOF
# Code source Python
cat > app.py << 'EOF'
#!/usr/bin/env python3
"""Application principale"""
import os
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def connect_database(host, port):
logger.info(f"Connexion à {host}:{port}")
# TODO: implémenter la connexion réelle
return True
def process_data(data):
# FIXME: gérer les erreurs
if not data:
raise ValueError("Data is empty")
return data.upper()
if __name__ == "__main__":
connect_database("localhost", 5432)
# TODO: ajouter la logique métier
EOF
# Fichier avec adresses email
cat > contacts.txt << 'EOF'
alice@example.com - Alice Martin
bob.smith@company.org - Bob Smith
charlie@test.co.uk - Charlie Brown
invalid-email - Non valide
ADMIN@EXAMPLE.COM - Administrateur
support@help-desk.net - Support technique
EOF
echo "✅ Lab créé dans ~/grep-lab"
ls -la ~/grep-lab
  1. Recherche simple. Trouvez toutes les lignes contenant ERROR dans application.log.

    Fenêtre de terminal
    grep "ERROR" ~/grep-lab/application.log

    grep affiche toutes les lignes contenant le motif — ici, trois lignes.

  2. Ignorer la casse. Trouvez toutes les variantes de error, quelle que soit la casse.

    Fenêtre de terminal
    grep -i "error" ~/grep-lab/application.log

    -i rend la recherche insensible à la casse.

  3. Numéros de lignes. Affichez les erreurs avec leur numéro de ligne.

    Fenêtre de terminal
    grep -n "ERROR" ~/grep-lab/application.log

    -n préfixe chaque résultat par son numéro de ligne dans le fichier.

  4. Inverser la recherche. Affichez toutes les lignes sauf celles contenant DEBUG.

    Fenêtre de terminal
    grep -v "DEBUG" ~/grep-lab/application.log

    -v inverse le filtre : il garde les lignes qui ne correspondent pas.

  5. Compter les occurrences. Comptez le nombre de lignes contenant INFO.

    Fenêtre de terminal
    grep -c "INFO" ~/grep-lab/application.log

    -c renvoie le nombre de lignes correspondantes, pas les lignes elles-mêmes.

  6. Contexte après. Affichez chaque ERROR suivi des 2 lignes qui suivent.

    Fenêtre de terminal
    grep -A 2 "ERROR" ~/grep-lab/application.log

    -A N ajoute N lignes de contexte après chaque correspondance. Pour du contexte avant et après : grep -C 1 "ERROR" ~/grep-lab/application.log.

  7. Mot entier. Trouvez INFO sans capturer un éventuel INFORMATION.

    Fenêtre de terminal
    grep -w "INFO" ~/grep-lab/application.log

    -w impose une frontière de mot autour du motif.

  8. Expressions régulières basiques. Trouvez les lignes commençant par une date (2025-).

    Fenêtre de terminal
    grep "^2025-" ~/grep-lab/application.log

    ^ représente le début de ligne en regex.

  9. Regex étendues avec alternance. Trouvez les lignes contenant ERROR ou WARNING.

    Fenêtre de terminal
    grep -E "ERROR|WARNING" ~/grep-lab/application.log

    -E active les regex étendues, où | signifie « ou ».

  10. Exclure les commentaires. Affichez les lignes de config.conf qui ne sont pas des commentaires.

    Fenêtre de terminal
    grep -v "^#" ~/grep-lab/config.conf

    ^# cible les lignes commençant par # ; -v les exclut.

  11. Pipeline avec grep. Listez les processus Python en cours.

    Fenêtre de terminal
    ps aux | grep python | grep -v grep

    grep filtre la sortie de ps ; le second grep -v grep retire la ligne du grep lui-même.

  12. Recherche récursive. Trouvez tous les TODO dans les fichiers du lab.

    Fenêtre de terminal
    grep -r "TODO" ~/grep-lab/

    -r parcourt récursivement tous les fichiers du dossier — les TODO sont dans app.py.

Dix exercices pour valider votre maîtrise. Tous se traitent sur les fichiers du lab ~/grep-lab. Cherchez d'abord par vous-même, puis dépliez la solution pour vous corriger.

Exercice 1 — Trouver les erreurs. Affichez toutes les lignes contenant ERROR dans application.log. Indice : syntaxe simple grep "motif" fichier.

Voir la solution
Fenêtre de terminal
grep "ERROR" ~/grep-lab/application.log

grep affiche les lignes contenant le motif spécifié.

Exercice 2 — Ignorer la casse. Trouvez toutes les variantes de warning (warning, WARNING, Warning…). Indice : -i pour insensible à la casse.

Voir la solution
Fenêtre de terminal
grep -i "warning" ~/grep-lab/application.log

-i rend la recherche insensible à la casse.

Exercice 3 — Lignes sans DEBUG. Affichez toutes les lignes sauf celles contenant DEBUG. Indice : -v inverse la sélection.

Voir la solution
Fenêtre de terminal
grep -v "DEBUG" ~/grep-lab/application.log

-v affiche les lignes qui ne correspondent pas au motif.

Exercice 4 — Compter les erreurs. Comptez le nombre de lignes contenant ERROR. Indice : -c pour count.

Voir la solution
Fenêtre de terminal
grep -c "ERROR" ~/grep-lab/application.log

-c renvoie uniquement le nombre de lignes correspondantes.

Exercice 5 — Contexte d'erreur. Affichez chaque ligne ERROR avec les 2 lignes suivantes. Indice : -A pour after.

Voir la solution
Fenêtre de terminal
grep -A 2 "ERROR" ~/grep-lab/application.log

-A N affiche N lignes après chaque correspondance.

Exercice 6 — Mot entier. Trouvez port dans config.conf sans capturer import ou export. Indice : -w pour word.

Voir la solution
Fenêtre de terminal
grep -w "port" ~/grep-lab/config.conf

-w garantit que le motif est un mot entier, pas une sous-chaîne.

Exercice 7 — Regex avec alternance. Trouvez les lignes contenant ERROR ou WARNING. Indice : -E pour les regex étendues, | pour le OU.

Voir la solution
Fenêtre de terminal
grep -E "ERROR|WARNING" ~/grep-lab/application.log

-E active les regex étendues, où | signifie « ou ».

Exercice 8 — Exclure les commentaires. Affichez les lignes de config.conf sans les commentaires (#). Indice : ^# cible le début de ligne, -v inverse.

Voir la solution
Fenêtre de terminal
grep -v "^#" ~/grep-lab/config.conf

^# cible les lignes commençant par # ; -v les exclut.

Exercice 9 — Recherche récursive. Trouvez tous les TODO dans les fichiers du lab. Indice : -r pour récursif.

Voir la solution
Fenêtre de terminal
grep -r "TODO" ~/grep-lab/

-r parcourt récursivement tous les sous-dossiers.

Exercice 10 — Filtrer un processus. Listez les processus contenant ssh sans afficher la ligne du grep lui-même. Indice : un second grep -v grep.

Voir la solution
Fenêtre de terminal
ps aux | grep ssh | grep -v grep

Le second grep -v grep exclut la ligne du processus grep de la sortie.

Quand grep ne renvoie pas ce qu'on attend, le problème vient presque toujours du motif (casse, regex, échappement). Voici comment diagnostiquer.

Fenêtre de terminal
# Tester le motif sur une ligne simple
echo "test ERROR test" | grep "ERROR"
# Afficher les caractères non imprimables du fichier
cat -A fichier.log | head
# Valider une expression régulière isolément
echo "test123" | grep -E "[0-9]+"
# Voir combien de lignes correspondent avant de filtrer
grep -c "MOTIF" fichier.log
Message d'erreurCause probableSolution
grep: <fichier>: No such file or directoryFichier inexistant ou mauvais cheminVérifier avec ls, contrôler chemin relatif/absolu
grep: Invalid regular expressionSyntaxe regex incorrecte (parenthèse/crochet non fermé)Corriger la regex, ou -F pour une recherche littérale
Binary file <fichier> matchesLe fichier est détecté comme binaireForcer le mode texte avec grep -a
ÉlémentRôleExemple
grep "motif" fichierRecherche simplegrep "ERROR" log.txt
-iIgnorer la cassegrep -i "error" log.txt
-vInverser (exclure)grep -v "DEBUG" log.txt
-nNuméros de lignesgrep -n "ERROR" log.txt
-cCompter les lignesgrep -c "ERROR" log.txt
-wMot entiergrep -w "port" config
-lNoms de fichiers uniquementgrep -rl "TODO" .
-rRecherche récursivegrep -r "TODO" src/
-oAfficher uniquement le matchgrep -o "IP: [0-9.]*"
-A NN lignes aprèsgrep -A 3 "ERROR"
-B NN lignes avantgrep -B 2 "ERROR"
-C NN lignes de contextegrep -C 2 "ERROR"
-ERegex étenduesgrep -E "a|b"
-FTexte littéral (pas de regex)grep -F "*.txt"
MotifRôleExemple
^motifDébut de lignegrep "^#" config
motif$Fin de lignegrep "done$" log
.Un caractère quelconquegrep "err.r"
*Zéro occurrence ou plus du précédentgrep "ab*c"
[abc]Un caractère parmi la listegrep "[aeiou]"
[^abc]Tout sauf ces caractèresgrep "[^0-9]"
a|ba OU b (avec -E)grep -E "cat|dog"
\<mot\>Mot entier (regex basique)grep "\<port\>"

Vous maîtrisez grep lorsque vous pouvez cocher chacun de ces points :

  • Je sais faire une recherche simple avec grep
  • Je sais ignorer la casse avec -i
  • Je sais inverser la recherche avec -v
  • Je sais compter les lignes avec -c
  • Je sais afficher le contexte avec -A, -B, -C
  • Je sais chercher un mot entier avec -w
  • Je sais utiliser les regex étendues avec -E
  • Je sais faire une recherche récursive avec -r
  • Je sais combiner grep dans un pipeline

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

10 questions
5 min.
80% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre

La commande grep est l'outil de recherche textuelle le plus utilisé sous Linux. Sa syntaxe simple (grep "motif" fichier) couvre 80% des besoins quotidiens. Les options -i (casse), -v (inverser), -n (numéros), -r (récursif) et -E (regex étendues) permettent de couvrir les cas avancés. Pour du traitement plus complexe (extraction de colonnes, calculs), combinez grep avec awk ou cut.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn