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 :
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 :
[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 :
cat logs/server.log | grep ERRORCette 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 :
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 :
grep -i "post" logs/access.log
# Output:
# 127.0.0.1 - - [22/May/2026:10:10:00 +0000] "POST /login HTTP/1.1" 401 234Si le fichier spécifié n'existe pas, grep renverra une erreur :
grep "ERROR" file_inesistente.log
# Output:
# grep: file_inesistente.log: No such file or directoryÀ vous de jouer
Ejercicio 1: Cerca errori nei log
Filtrez le fichier 'logs/server.log' pour extraire et afficher uniquement les lignes qui contiennent le mot 'ERROR' (en majuscules).
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
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'.
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
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.
Afficher l'indice
Utilisez grep avec l'option -i pour ignorer la casse.
Solution disponible après 3 tentatives