grep
Présentation
La commande grep (Global Regular Expression Print) permet de rechercher des chaînes de caractères dans des fichiers ou en sortie de commande.
C’est l’outil idéal pour filtrer, explorer, et déboguer du texte dans le terminal.
Syntaxe de base
Exemples simples
Rechercher une ligne contenant ssh :
Afficher les lignes contenant root dans un fichier :
Options courantes
| Option | Description |
|---|---|
| -i | Ignore la casse |
| -n | Affiche le numéro de ligne |
| -r ou -R | Recherche récursive dans les dossiers |
| -l | Affiche seulement les noms de fichiers contenant le motif |
| -L | Affiche les fichiers ne contenant pas le motif |
| -v | Affiche tout sauf les lignes contenant le motif |
| -c | Compte les lignes correspondantes |
| -w | Cherche le mot entier |
| -A n / -B n / -C n | Affiche n lignes après, avant, ou autour |
| Colore les correspondances | |
| -e | Permet de spécifier plusieurs motifs |
| -E | Active les expressions régulières étendues |
| -F | Traite le motif comme du texte brut, sans expression régulière |
Recherche récursive
Affiche les fichiers, numéros de lignes, et lignes contenant le motif dans tout /etc.
Recherche insensible à la casse
Exclusion de motif
Affiche toutes les lignes ne contenant pas le mot « erreur ».
grep avec des tubes
Permet de filtrer une sortie de commande. Le grep lui-même apparaît dans le résultat ; pour l'éviter :
# ou
pgrep -a nginx
grep et les expressions régulières
Les caractères +, ?, |, ( et ) ne sont reconnus qu'avec -E :
Extrait les lignes contenant une adresse de courriel (version simplifiée).
Quelques motifs utiles :
| Motif | Sens |
|---|---|
| ^mot | Ligne commençant par « mot » |
| mot$ | Ligne finissant par « mot » |
| ^$ | Ligne vide |
| [0-9]{3} | Trois chiffres (avec -E) |
Astuce grep et find
Rechercher un motif dans tous les fichiers .log :
# ou
find . -name "*.log" -exec grep -Hn "erreur" {} +
La première forme est plus rapide ; la seconde reste utile quand il faut d'autres critères de find.