Temps de lecture estimé : 6 minutes
Points clés à retenir
- Dans man grep, cherche avec /motif, avance avec espace, quitte avec q
- Priorise -i, -v, -n, -r, -o et -C parmi les options du manuel
- Le motif se met entre guillemets, et -E active |, + et ?
- grep -c compte les lignes ; pour les occurrences, utilise grep -o | wc -l
- Codes de sortie : 0 match, 1 aucun match, 2 erreur
Afficher et lire la page de manuel avec la commande man grep
Tape man grep dans ton terminal, puis q pour quitter. La commande man grep ouvre la page de référence officielle de l’outil, et la vraie compétence consiste à la lire vite, pas à la lire en entier.
Je me souviens d’un soir à Lisbonne, en pleine panne de serveur, où j’ai scrollé cette page pendant dix minutes sans trouver ce que je cherchais. Depuis, j’applique toujours la même méthode de navigation.
Se déplacer et chercher dans la page
La page s’affiche dans un pager (en général less). Voici les touches qui m’évitent de me perdre :
- Flèches haut/bas pour avancer ligne par ligne ;
- Espace pour descendre d’un écran,
bpour remonter ; /motifpuis Entrée pour chercher,npour l’occurrence suivante,Npour la précédente ;qpour quitter.
Exemple concret : tape /-n pour sauter directement à l’option qui affiche les numéros de ligne. Pour atteindre une section, cherche son titre, par exemple /OPTIONS.
La structure de la page
La page suit toujours le même plan : SYNOPSIS (la forme de la commande), DESCRIPTION, OPTIONS, EXPRESSIONS RATIONNELLES, puis CODE DE RETOUR. Dans mon usage, je file presque toujours à OPTIONS, et je ne descends vers les expressions rationnelles que si mon motif ne fonctionne pas.
Version française, version anglaise et alternatives
Plusieurs sites publient la page en français, mais ces traductions correspondent à des versions différentes de grep. Certaines options récentes peuvent donc y manquer. Vérifie ta version avec grep --version : la page man7.org, elle, correspond à GNU grep 3.12 (version du 21 mars 2025).
Pour un rappel express, grep --help affiche un résumé court des options, sans explication détaillée. info grep ouvre un manuel plus narratif, organisé en chapitres. Je réserve man aux vérifications précises et --help aux oublis de dernière seconde.

La syntaxe de grep d’après le manuel
Le SYNOPSIS se résume à grep [options] motif [fichier...]. Sans fichier, grep lit l’entrée standard, ce qui permet de le brancher derrière un autre programme avec un pipe.
Le manuel mentionne aussi egrep, fgrep et rgrep. Ce sont des variantes historiques : je leur préfère grep -E (regex étendues), grep -F (texte littéral) et grep -r (récursif).
La différence entre regex basiques et étendues tient en une ligne. Sans -E, les symboles |, + et ? sont traités comme des caractères littéraux, ou doivent être échappés. C’est la cause numéro un des « ça ne marche pas » que mes auditrices et auditeurs me remontent.
Les options essentielles à retenir dans le manuel
La section OPTIONS est longue. Voici comment je la hiérarchise, du plus utile au plus occasionnel, avec l’exemple qui va avec.
Sélection et affichage
-iignore la casse. Mon premier réflexe quand une recherche ne renvoie rien alors que le texte existe (pense aux niveaux de logERROReterror) ;-vinverse la sélection :grep -v "^#" fichieraffiche les lignes qui ne sont pas des commentaires ;-wcherche un mot entier,-xune ligne entière ;-ccompte les lignes qui correspondent ;-lliste les fichiers qui contiennent le motif,-Lceux qui ne le contiennent pas ;-on’affiche que la partie qui correspond ;-qn’affiche rien, utile dans les scripts.
Préfixes et contexte
-n préfixe chaque ligne de son numéro, qui commence à 1. -H force l’affichage du nom de fichier, -h le supprime. -b donne la position en octets, comptée à partir de l’octet 0.
Pour le contexte, -A 3 montre trois lignes après, -B 3 trois lignes avant, et -C 3 les deux. Quand je traque une erreur, -C me fait gagner un temps fou.
Fichiers et répertoires
-r parcourt un dossier récursivement, -R suit en plus les liens symboliques. Tu peux restreindre avec --include="*.py", --exclude et --exclude-dir=node_modules.
Les expressions rationnelles dans grep
Pas besoin de relire toute la théorie. Quatre notions suffisent dans 90 % de mes recherches.
- Classes et crochets :
[0-9]pour un chiffre,[aeiou]pour une voyelle ; - Quantificateurs :
?(0 ou 1),*(0 à n),+(1 à n),{n,m}(entre n et m) ; - Alternance et groupes avec
-E:grep -E "erreur|warning" app.log; - Échappement : pour chercher un point ou une étoile littéraux, échappe-les avec
\, ou utilise-Fpour tout traiter comme du texte.
Exemple pour repérer une adresse IPv4 : grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" fichier. Attention, ce motif simple ne vérifie pas que chaque nombre est inférieur ou égal à 255.
Des exemples concrets inspirés du manuel
Voici les quatre usages qui reviennent le plus dans ma pratique.
- Filtrer des logs :
grep -i -C 2 "timeout" app.log; - Chercher dans un projet :
grep -rn --include="*.js" --exclude-dir=node_modules "fetchUser" .; - Exclure commentaires et lignes vides :
grep -Ev "^(#|$)" config.conf; - Enchaîner avec d’autres outils :
grep -o "erreur" app.log | wc -lpour compter les occurrences, ougrep -rl "TODO" . | xargs wc -l.
Le dernier point mérite une précision. grep -c compte les lignes qui correspondent, pas les occurrences. Si le mot apparaît trois fois sur la même ligne, il sera compté une seule fois. Pour les occurrences réelles, passe par grep -o | wc -l.
Codes de retour, couleurs et variables d’environnement
La section CODE DE RETOUR est courte mais essentielle : 0 si une ligne au moins est sélectionnée, 1 si aucune ne l’est, et 2 en cas d’erreur.
C’est ce qui rend -q si pratique dans un script : if grep -q "ERROR" app.log; then echo "à vérifier"; fi. Rien ne s’affiche, seul le code de sortie compte.
Côté couleurs, la variable GREP_COLORS permet de les personnaliser. Sa valeur par défaut est ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36 : correspondances en rouge, noms de fichiers en magenta, numéros de ligne en vert. Je ne touche à cette variable que si le rendu gêne ma lecture.
Erreurs fréquentes et alternatives
- Motif sans guillemets : le shell interprète
*,?,|ou$avant grep. Entoure toujours le motif de guillemets ; - Fichiers binaires : grep signale une correspondance sans afficher la ligne. Ajoute
-apour les traiter comme du texte ; - Regex étendue oubliée :
|,+et?demandent-E; - Casse : pense à
-iquand le résultat est vide.
Quand grep ne suffit plus, change d’outil. awk convient pour travailler par colonnes, sed pour remplacer du texte, et ripgrep pour une recherche très rapide dans de gros projets.
La première chose que je ferais à ta place : ouvre
man grep, tape/-r, et teste chaque option sur un vrai fichier de logs. Dix minutes de pratique valent mieux qu’une heure de lecture.
Retiens la méthode plutôt que la liste : la commande man grep t’apprend à chercher, à repérer et à vérifier par toi-même.



