La commande grep sous Linux

De Wiki de Mémoire Vive
Aller à la navigation Aller à la recherche

Tableau complet pour la commande grep sous Bash

Voici des exemples d’utilisations de la commande grep sous Linux.

Utilisation de la commande grep
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

https://chat.mistral.ai/chat