Transformez et préparez des données textuelles

Vous avez isolé les erreurs de notre serveur en une seule ligne de commande ! Mais si vous envoyez ce résultat tel quel à vos collègues, ils risquent d'avoir du mal à l'interpréter. Les données que nous extrayons du terminal sont souvent accompagnées de caractères parasites, de crochets ou de colonnes d'informations techniques qui alourdissent inutilement la lecture.

L’information est identifiée, mais son affichage doit désormais être amélioré pour qu'elle soit comprise et partagée facilement avec l'équipe.

Pour rendre nos résultats parfaitement lisibles à la volée, nous allons voir comment :

  • nettoyer des données textuelles avec la commandesed,

  • reformater des sorties complexes avec la commandeawk.

Nettoyez des données textuelles avec la commandesed

Les lignes que nous extrayons du terminal sont souvent polluées par des formats incohérents ou des caractères inutiles qui n'apportent aucune valeur à votre synthèse.

Mais comment puis-je effacer ce texte parasite sur des milliers de résultats sans devoir tout modifier à la main dans Vim et sans modifier le fichier d'origine ?

La solution s'appelle  sed  (pour Stream Editor). Cette commande permet de modifier du texte "à la volée", sans ouvrir de fichier dans un éditeur.

Elle est utilisée pour des corrections simples, comme remplacer un mot ou supprimer un caractère inutile. Son usage le plus courant est la substitution :  sed 's/WARNING/ATTENTION/' journal.log

Cette commande se lit ainsi : remplace le mot  WARNINGpar  ATTENTION  dans l’affichage. La lettre

s   indique une substitution, et les barres obliques   /  délimitent l'ancien terme du nouveau. 

Pour remplacer toutes les occurrences, il faut ajouter l’option  g  (pour global) :  sed 's/WARNING/ATTENTION/g' journal.log

Vous pouvez également supprimer un élément inutile en le remplaçant par du vide. Par exemple, pour enlever un préfixe encombrant comme  STATUT  :  sed 's/STATUT://' journal.log

Arthur, notre référent technique, s'en souvient bien :

À mes débuts, je devais extraire une liste d'utilisateurs. Chaque ligne commençait par un code technique. J'ai cru que j'allais devoir ouvrir Vim et les effacer un par un... Quand on m'a montré comment utiliser  sed  pour nettoyer l'affichage final en un dixième de seconde, ça a été une révélation !

Regarder directement comment se passe cette transformation dans le terminal.

Dans cette vidéo, on a :

  • corrigé des données à la volée avecsed,

  • utilisé l'expression régulière ^pour appliquer une modification précise, ciblant un motif uniquement s'il se trouve en début de ligne,

  • vérifié que le fichier source restait intact, confirmant que seul l'affichage a été transformé avec la commandecat.

Reformatez des sorties pour les rendre plus lisibles

Nettoyer quelques caractères avec sed est extrêmement pratique. Mais comment procéder si l’on veut aller plus loin qu’un simple remplacement et remettre en forme chaque ligne complète ?

Prenons un exemple : un fichier de logs dans lequel chaque ligne contient plusieurs informations séparées par des espaces :

2024-01-10 ERROR Échec_connexion
2024-01-10 INFO Connexion_reussie
2024-01-10 WARNING Tentative_suspecte

 Si vous souhaitez partager rapidement un diagnostic avec votre équipe, la date n’est peut-être pas l’information la plus importante. Vous pouvez vouloir afficher uniquement le type d’événement et le message associé.

C’est précisément le rôle de  awk  : cette commande permet de découper chaque ligne en colonnes, puis de sélectionner uniquement celles que vous voulez afficher. Sa syntaxe de base est la suivante :  awk '{print $N}'

Le mot print indique ce qu’il faut afficher, et   $N  désigne le numéro de la colonne à conserver. Dans notre exemple :

  • $1correspond à la date,

  • $2au type d’événement,

  • $3au message.

Pour afficher uniquement le type d’événement et le message, vous pouvez utiliser :  awk '{print $2, $3}' journal.log

 Le terminal affiche alors un résultat plus lisible, centré sur l’information utile.

Dans la pratique,  awk  s’utilise souvent à la suite d’une autre commande grâce au pipe (  |  ). Vous pouvez ainsi transformer directement un résultat sans créer de fichier intermédiaire. Par exemple, après avoir identifié les événements dans un fichier, vous pouvez ajuster l’affichage :

grep "ERROR" journal.log | sort | uniq -c | awk '{print $2, $1}'

Cette commande permet de mettre en avant l’information clé dans un format plus clair. 

Et si on utilise  $0  ?

C’est un raccourci pratique qui représente la ligne entière. Il permet d’afficher tout le contenu sans sélectionner de colonnes spécifiques.

Votre objectif principal à cette étape est d’obtenir un affichage clair et compréhensible, conçu pour une lecture humaine immédiate, et non pour alimenter un traitement automatisé.

À vous de jouer

Contexte 

Vous avez réussi à identifier le type d’événement le plus fréquent dans le fichier journal_evenements_10000.log.

Cependant, le résultat affiché dans le terminal reste difficile à exploiter tel quel : il contient des informations redondantes ou peu lisibles pour un partage avec le reste de l’équipe. Votre objectif est désormais d’améliorer la présentation de ce résultat pour le rendre plus clair et compréhensible.

Consignes

Pour améliorer la lisibilité de l’information obtenue précédemment :

  1. Reprenez ou reconstruisez une commande permettant d’afficher le type d’événementle plus fréquent dans le fichierjournal_evenements_10000.log.

  2. Utilisez sed pour nettoyer la sortie affichée : supprimez ou remplacez une partie du texte qui n’est pas utile à la lecture (par exemple un mot, un préfixe, ou un segment répétitif).

  3. Utilisez awk pour reformater la sortie : conservez uniquement les informations essentielles à la compréhension du résultat (par exemple le nombre d’occurrences et le type d’événement).

  4. Effectuez ces transformations à la volée, c’est-à-dire directement dans le terminal, sans modifier le fichier journal_evenements_10000.log.

  5. Vérifiez que le fichier d’origine est intact en relançant une commande simple sur ce fichier (par exempleheadougrep).

  6. Enregistrez le résultat final dans un fichier texte afin de pouvoir le partager avec votre équipe.
    Utilisez pour cela une redirection (>ou>>) directement dans votre commande.

  7. Comparez visuellement l’affichage avant et après transformation pour vérifier que l’information clé est plus claire.

En résumé

  • Les résultats bruts du terminal contiennent souvent des éléments inutiles ou techniques qui doivent être nettoyés pour être partagés et compris facilement par une équipe.

  • La commandesedpermet de modifier et de nettoyer un texte à la volée, notamment en remplaçant ou supprimant des motifs sans altérer le fichier d’origine.

  • L’utilisation de la syntaxe de substitutions/ancien/nouveau/et des expressions régulières comme^permet de cibler précisément les parties du texte à transformer.

  • La commandeawkpermet d’extraire et d’afficher uniquement certaines colonnes d’une sortie complexe en utilisant la notation$Npour alléger l’affichage.

  • La combinaison desed,awket du pipe|permet de transformer et reformater des données directement dans le terminal sans modifier les fichiers sources.

Vos données brutes sont nettoyées et vos affichages sont désormais parfaitement lisibles. Vous savez extraire l'information clé au milieu de milliers de lignes avec précision. Mission accomplie !

Fini le temps où l'écran noir du terminal vous intimidait. Vous possédez maintenant un véritable atout pour votre équipe : faire parler la donnée brute en quelques secondes. 

Arthur, notre référent technique, partage un dernier conseil pour la route : la maîtrise du terminal ne repose pas sur l'apprentissage par cœur de centaines de commandes complexes, mais sur la méthode. Gardez cette équation en tête : un bon diagnostic = un filtre précis + un comptage rigoureux + un affichage épuré sur mesure !

Résistez toujours à la tentation de la précipitation (oui, nous parlons bien de la fameuse commande  cat  lancée par erreur sur un fichier de 10 Go !) et appuyez-vous systématiquement sur des outils interactifs comme less pour inspecter vos documents en toute sécurité.

Félicitations pour le travail accompli, et bon courage pour vos futures enquêtes depuis le terminal !

Vous maîtrisez désormais l'exploration de données à la volée. Mais imaginez un instant que l'on vous demande d'extraire exactement le même diagnostic tous les lundis matins... Si l'idée de retaper manuellement vos combinaisons de commandes vous enchante peu, sachez qu'il existe une suite très pratique à cette aventure. Si vous souhaitez aller plus loin pour gagner encore plus de temps, vous pourrez apprendre à automatiser vos actions récurrentes avec des scripts Bash !

Et si vous obteniez un diplôme OpenClassrooms ?
  • Formations jusqu’à 100 % financées
  • Date de début flexible
  • Projets professionnalisants
  • Mentorat individuel
Trouvez la formation et le financement faits pour vous