Linux : supprimer les lignes vides d’un fichier avec sed
Qu'avons-nous dans la boîte ?
Vous travaillez sous Linux, vous souhaitez supprimer les lignes vides d’un fichier et vous ne savez pas comment faire ? Cet article va répondre à cette question à l’aide de commandes très courantes : grep et sed. Nous verrons comment afficher le contenu d’un fichier en excluant les lignes vides ou commentées, puis nous verrons comment supprimer les lignes vides et commentées d’un fichier. Lorsque l’on supprime les lignes, c’est à faire avec précaution, car cette action est irréversible, à moins d’avoir une sauvegarde ou une copie du fichier.
Cette méthode repose sur l’utilisation des commandes grep et sed donc elle fonctionnera sur diverses distributions Linux, y compris les plus courantes : Ubuntu, Debian, CentOS, Rocky Linux, etc.
1. Afficher le contenu d’un fichier sans les lignes vides
Commençons par prendre un fichier comme exemple. Pour ma part, ce sera le fichier « /tmp/fichier.txt« , avec le contenu suivant :
Sur l’image ci-dessus, les lignes vides et commentées sont bien visibles. Désormais avec la commande « cat » nous allons afficher le contenu du fichier et filtrer la sortie avec « grep ».
- Afficher le contenu du fichier sans les lignes vides
cat /tmp/fichier.txt | grep .
- Afficher le contenu du fichier sans les lignes commentées (mais avec les lignes vides)
Ce filtre élimine toutes les lignes qui commencent par le caractère « # », ce qui correspond aux commentaires.
cat /tmp/fichier.txt | grep -v ^\#
- Afficher le contenu du fichier sans les lignes vides et sans les lignes commentées
cat /tmp/fichier.txt | grep . | grep -v ^\#
Ces trois commandes sont redoutables et elles fonctionnent très bien :
Passons à la seconde partie de ce tutoriel où nous allons supprimer ces lignes du fichier.
2. Supprimer les lignes vides d’un fichier avec sed
La commande sed est très puissante pour modifier le contenu de fichiers sous Linux, en s’appuyant sur des expressions régulières. Grâce à elle, nous allons pouvoir supprimer toutes les lignes vides de notre fichier sans altérer les autres lignes.
- Supprimer les lignes vides du fichier
sed -i '/^$/d' /tmp/fichier.txt
Voici le résultat sur le fichier que nous maltraitons depuis le début :
- Supprimer les lignes commentées du fichier
sed -i '/^#/d' /tmp/fichier.txt
- Supprimer les lignes vides et commentées du fichier
Comme avec « grep », nous pouvons combiner les deux règles pour supprimer à la fois les lignes vides et les lignes commentées. Finalement, vous avez le choix entre l’une ou l’autre des règles, ou les deux règles en même temps.
sed -i -e '/^#/d' -e '/^$/d' /tmp/fichier.txt
Grâce à cet article de la boîte à tutoriels informatique, vous êtes capable de filtrer le contenu de vos fichiers Linux. Le fait de filtrer l’affichage est intéressant pour réduire la sortie dans la console afin qu’elle soit plus réduire à l’écran. La suppression est utile quand on a besoin d’effectuer une modification massive sur un fichier, par exemple un jeu de données tel qu’un fichier au format CSV.
Ressources :