La commande grep sous Linux
Tableau complet pour la commande grep sous Bash
Voici des exemples d’utilisations de la commande grep sous Linux.
| Option | Description | Exemple d'utlisiation |
|---|---|---|
| (sans option) | Recherche une chaîne de caractères dans un fichier. | grep "motif" fichier.txt |
-i |
Ignore la casse (majuscules/minuscules). | grep -i "erreur" fichier.log |
-v |
Inverse la recherche : affiche les lignes qui ne contiennent pas le motif. | grep -v "succès" fichier.txt |
-n |
Affiche le numéro de ligne pour chaque résultat. | grep -n "warning" fichier.log |
-r ou -R |
Recherche récursivement dans les sous-dossiers. | grep -r "fonction" /dossier/ |
-l |
Affiche uniquement les noms des fichiers contenant le motif. | grep -l "TODO" *.py |
-c |
Compte le nombre de lignes correspondant au motif. | grep -c "erreur" fichier.log |
-w |
Recherche le motif comme un mot entier (évite les correspondances partielles). | grep -w "port" fichier.txt |
-A n |
Affiche n lignes après chaque résultat. | grep -A 3 "erreur" fichier.log |
-B n |
Affiche n lignes avant chaque résultat. | grep -B 2 "erreur" fichier.log |
-C n |
Affiche n lignes autour de chaque résultat. | grep -C 1 "erreur" fichier.log |
-e |
Spécifie un motif (utile pour plusieurs motifs ou motifs complexes). | grep -e "erreur" -e "warning" fichier.log |
-f fichier |
Lit les motifs depuis un fichier (un motif par ligne). | grep -f motifs.txt fichier.log |
-E |
Active les expressions régulières étendues (ERE). | grep -E "motif1" fichier.txt |
--color |
Met en couleur les correspondances (activé par défaut sur la plupart des systèmes). | grep --color "motif" fichier.txt |
Exemples pratiques
Recherche simple dans un fichier
Rechercher le mot "erreur" dans un fichier nommé fichier.log :
grep "erreur" fichier.log
Recherche insensible à la casse
Rechercher le mot "erreur" (en majuscules ou minuscules) :
grep -i "erreur" fichier.log
Recherche récursive dans un dossier
Rechercher le mot "erreur" dans tous les fichiers du dossier courant et de ses sous-dossiers :
grep -r "erreur" .
Afficher les numéros de ligne
Afficher les lignes contenant "erreur" avec leur numéro de ligne :
grep -n "erreur" fichier.log
Recherche inversée
Afficher les lignes qui ne contiennent pas le mot "erreur" :
grep -v "erreur" fichier.log
Utilisation d’expressions régulières
Rechercher des lignes commençant par "Erreur" (avec une majuscule) :
grep "^Erreur" fichier.log
Compter le nombre de correspondances
Compter le nombre de lignes contenant le mot "erreur" :
grep -c "erreur" fichier.log
Rechercher dans plusieurs fichiers
Rechercher le mot "erreur" dans plusieurs fichiers :
grep "erreur" *.log
Afficher les noms de fichiers contenant le motif
Afficher uniquement les noms des fichiers contenant le mot "erreur" :
grep -l "erreur" *.log
Utilisation avec des tubes (pipes)
Rechercher "erreur" dans la sortie de la commande dmesg :
dmesg | grep "erreur"
Recherche de mots entiers
Rechercher uniquement le mot entier "erreur" (et non des parties de mots)
grep -w "erreur" fichier.log
Afficher les lignes avant/après la correspondance
Afficher 3 lignes avant et après chaque correspondance :
grep -A 3 -B 3 "erreur" fichier.log
Utilisation de motifs complexes
Rechercher des lignes contenant soit "erreur" soit "avertissement" :
grep -E "erreur|avertissement" fichier.log
Ce motif est une expression régulière qui décrit une adresse IP version 4 (IPv4) :
grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" fichier.txt
Rechercher dans des fichiers compressés
Rechercher dans des fichiers compressés (avec zgrep) :
zgrep "erreur" fichier.log.gz
Combiner avec d’autres commandes
Compter le nombre total de lignes contenant "erreur" dans tous les fichiers .log :
grep -c "erreur" *.log | awk '{sum += $1} END {print sum}'
dmesg | grep -i "usb"
grep "erreur" fichier.log | less
Voir également
Les expressions régulières de base utilisées sous Bash
Sources : Le Chat Mistral