Question 1Qu'est-ce qui s'affiche quand tu lances grep error log.txt ?
Recherche de texte — grep
Apprends les bases pour trouver les lignes contenant une chaîne, plus quand utiliser -i pour ignorer la casse, -n pour les numéros de ligne, et -r pour la recherche récursive — tout en pratique dans un terminal en navigateur.
Trouver une chaîne — grep
grep est la commande qui extrait et affiche uniquement les lignes d'un fichier contenant une chaîne donnée.
Utilise-la comme grep chaîne-recherchée fichier, et si des lignes correspondent, elles s'affichent telles quelles à l'écran.
Utilise-la pour trouver juste les lignes dont tu as besoin dans un long log.
grep extrait uniquement les lignes contenant la chaîne donnée, et ne produit pas le reste.echo 'error: disk full' > log.txt # crée la ligne 1
echo 'info: started' >> log.txt # ajoute
echo 'error: timeout' >> log.txt # ajoute
grep error log.txt # les 2 lignes contenant error
grep info log.txt # la 1 ligne contenant info
Ignorer la casse — -i / Numéros de ligne — -n
grep distingue les majuscules des minuscules.
Ajoute -i pour chercher sans cette distinction, afin de capturer à la fois Error et error.
Ajoute -n et le numéro de ligne s'affiche devant chaque ligne correspondante, pour savoir où elle se trouve dans le fichier.
-i et -n peuvent être combinés et appliqués à la fois, comme grep -in error app.txt.
| Option | Signification | Exemple |
|---|---|---|
-i | Ne pas distinguer majuscules et minuscules | grep -i error log.txt |
-n | Ajouter un numéro de ligne devant chaque correspondance | grep -n error log.txt |
-v | Afficher les lignes qui ne correspondent pas | grep -v info log.txt |
-r | Rechercher dans un répertoire récursivement | grep -r TODO src |
echo 'Error in disk' > app.txt # crée la ligne 1
echo 'error in app' >> app.txt # ajoute
echo 'ok' >> app.txt # ajoute
grep -i error app.txt # les 2 lignes Error et error
grep -n error app.txt # 2:error in app (avec numéro de ligne)
Exclure les lignes non correspondantes — -v
Ajoute -v et grep affiche les lignes qui ne contiennent pas la chaîne donnée.
Alors que le grep ordinaire garde les lignes correspondantes, -v supprime les lignes correspondantes et affiche le reste.
Utilise-le quand tu veux lire un log avec les lignes inutiles (comme info ou debug) supprimées.
-v exclut les lignes contenant la chaîne donnée et n'affiche que le reste.echo 'error: disk full' > log.txt # crée la ligne 1
echo 'info: started' >> log.txt # ajoute
echo 'error: timeout' >> log.txt # ajoute
grep -v info log.txt # les 2 lignes qui ne contiennent pas info
Chercher dans un répertoire récursivement — -r
Quand tu veux chercher non pas dans un seul fichier mais dans tous les fichiers d'un répertoire, ajoute -r et passe un répertoire au lieu d'un nom de fichier.
Il descend dans les sous-répertoires récursivement et affiche les lignes correspondantes sous la forme fichier:ligne.
grep -r part du src passé et descend dans le sous-répertoire src/sub pour chercher dans chaque fichier.mkdir -p src/sub # crée le répertoire de travail
echo 'TODO: fix later' > src/a.txt # 1 fichier dans le répertoire parent
echo 'TODO: review' > src/sub/b.txt # 1 fichier dans le sous-répertoire
grep -r TODO src # recherche récursive sous src
Vérification des connaissances
Répondez à chaque question une par une.
Question 2Quelle option ajoutes-tu à grep pour chercher sans distinguer majuscules et minuscules ?
Question 3Comment grep se comporte-t-il quand tu ajoutes -r et passes un répertoire ?