Passer au contenu principal
eLearner.app
Module 3 · Leçon 2 sur 27/11 dans le cours~15 min
Leçons du module (2/2)

Pipelines et filtres (grep et |)

L'une des fonctionnalités les plus puissantes de la ligne de commande Linux est la capacité de connecter différentes commandes afin que la sortie de l'une devienne l'entrée de la suivante. Cette technique est réalisée via des pipelines (tubes) et est prise en charge par la commande de filtrage grep.


Le filtre de texte : grep

La commande grep (Global Regular Expression Print) recherche un texte spécifique dans un ou plusieurs fichiers et affiche à l'écran les lignes correspondantes :

Bash
grep "parola" [nome_file]

Options utiles pour grep

  • grep -i "errore" server.log : Effectue une recherche case-insensitive (ignore la casse, trouvant aussi bien "Errore" que "ERROR").
  • grep -n "connessione" server.log : Affiche également le numéro de ligne correspondante dans le fichier.
  • grep -v "INFO" server.log : Inverse la recherche, en affichant uniquement les lignes qui ne contiennent pas le mot spécifié.

Enchaîner les commandes : Le Pipeline |

L'opérateur pipeline est représenté par la barre verticale |. Il permet d'envoyer la sortie standard de la commande de gauche directement vers l'entrée standard de la commande de droite :

Bash
[comando1] | [comando2]

Par exemple, si un fichier de log est énorme et que vous souhaitez rechercher un mot sans tout ouvrir, vous pouvez combiner cat et grep :

Bash
cat logs/server.log | grep ERROR

Cette commande lit l'intégralité du fichier server.log avec cat, mais au lieu de l'afficher à l'écran, elle le passe à grep, qui extraira et affichera uniquement les lignes contenant le mot "ERROR".


Exemples d'utilisation et erreurs courantes

Si vous effectuez une recherche sur un mot en minuscules (ex. "post") sur un fichier qui ne contient que des majuscules (ex. "POST"), grep ne renverra rien :

Bash
grep "post" logs/access.log
# Output: (aucun résultat, la recherche est sensible à la casse par défaut)

Pour trouver la ligne indépendamment de la façon dont elle est écrite, utilisez l'option -i :

Bash
grep -i "post" logs/access.log
# Output:
# 127.0.0.1 - - [22/May/2026:10:10:00 +0000] "POST /login HTTP/1.1" 401 234

Si le fichier spécifié n'existe pas, grep renverra une erreur :

Bash
grep "ERROR" file_inesistente.log
# Output:
# grep: file_inesistente.log: No such file or directory

À vous de jouer

Ejercicio 1: Cerca errori nei log

Exercice#linux.m3.l2.e1
Tentatives : 0Chargement…

Filtrez le fichier 'logs/server.log' pour extraire et afficher uniquement les lignes qui contiennent le mot 'ERROR' (en majuscules).

Chargement de l'éditeur…
Afficher l'indice

Utilisez la commande grep suivie du mot à rechercher et du chemin du fichier.

Solution disponible après 3 tentatives

Ejercicio 2: Pipeline e filtri

Exercice#linux.m3.l2.e2
Tentatives : 0Chargement…

Utilisez la commande cat pour lire le fichier 'logs/server.log' et redirigez sa sortie via un pipeline (|) vers la commande grep pour filtrer et afficher uniquement les lignes contenant le mot 'WARNING'.

Chargement de l'éditeur…
Afficher l'indice

Reliez cat logs/server.log à grep WARNING en utilisant le caractère pipe '|'.

Solution disponible après 3 tentatives

Ejercicio 3: Ricerca case-insensitive

Exercice#linux.m3.l2.e3
Tentatives : 0Chargement…

Recherchez toutes les lignes contenant le mot 'post' (indifféremment en majuscules ou minuscules) dans le fichier 'logs/access.log' en utilisant l'option appropriée de grep.

Chargement de l'éditeur…
Afficher l'indice

Utilisez grep avec l'option -i pour ignorer la casse.

Solution disponible après 3 tentatives