Grep
Modifié par john le 2025/05/24 23:47
grep et ses options
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
grep "motif" fichier.txt
-
Exemples simples
Rechercher une ligne contenant `ssh` :
grep ssh /var/log/auth.log
Afficher les lignes contenant "root" dans un fichier :
grep root /etc/passwd
-
Options courantes
| Option | Description | |
|---|---|---|
| `-i` | Ignore la casse (maj/min) | |
| `-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 | |
| `-v` | Affiche tout sauf les lignes contenant le motif | |
| ` | Colore les correspondances dans la sortie | |
| `-e` | Permet de spécifier plusieurs motifs | |
| `-E` | Active les expressions régulières étendues (`egrep`) |
-
Recherche récursive
grep -rn "motif" /etc
Cela affiche les fichiers, numéros de lignes, et lignes contenant le motif dans tout `/etc`.
-
Recherche insensible à la casse
grep -i "linux" fichier.txt
-
Exclusion de motif
grep -v "erreur" journal.log
Affiche toutes les lignes ne contenant pas le mot "erreur".
-
Grep avec pipes
ps aux | grep nginx
Permet de filtrer une sortie de commande.
-
grep + regex
grep "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+" fichier.txt
Extrait les lignes contenant des adresses email (simplifié).
-
Astuce grep + find
Pour rechercher un motif dans tous les fichiers `.log` :
find . -name "*.log" -exec grep -H "erreur" {} \;
-