Trier les lignes d’un fichier selon un mot avec sed
I. Présentation
Dans ce tutoriel, nous allons apprendre à sortir uniquement les lignes qui nous intéressent dans un fichier donné. Dans un gros fichier comme un fichier de logs, il peut être utile de n'afficher qu'un type de ligne, par exemple celles qui contiennent le mot "sshd" pour trier les processus de connexion sshd dans le fichier auth.log de votre système. Nous prendrons ce fichier (/var/log/auth.log) et ce processus (sshd) comme exemples pour ce tutoriel. Le fichier auth.log contient donc différents types d'informations concernant plusieurs processus.
II. La commande
Nous allons utiliser la commande sed pour n'afficher uniquement les lignes contenant le mot "sshd" pour les écrire ensuite dans un fichier à part. Nous allons donc utiliser cette commande que j'expliquerais par la suite :
sed -n -e '/sshd/p' auth.log > authssh.log
- sed : sed est une commande qui permet de manipuler des fichiers ou beaucoup d'autres types d'entrée
- -n : Indique qu'il faut afficher uniquement les lignes qui nous intéressent. Sans cette option, sed affichera toutes les lignes plus celles qui nous intéressent qui apparaitront alors en double.
- -e : Indique que nous allons préciser une commande, un tri sur chaque entrée (ligne du fichier auth.log)
- '/sshd/p' : C'est la commande, nous cherchons le mot 'sshd' et le 'p' indique que nous allons écrire ces lignes en sortie (print)
- auth.log : C'est le fichier que nous allons faire lire à sed, une entrée sera donc une ligne de ce fichier
- > authssh.log : C'est dans ce fichier (qui peut s'appeller comme vous le souhaitez) que seront écrites les sorties de sed. Sans cette partie, les sorties (les lignes contenants 'sshd') seront seulement écrites en ligne de commande sur votre terminal mais seront stockées nul part