Afficher un fichier de configuration sans commentaire

  Il est souvent utile d’afficher certains fichiers sans les commentaires, notamment les fichiers de configuration. Par exemple, le fichier de configuration de samba, smb.conf, comporte pas moins de 340 lignes. Si l’on affiche que l’essentiel, le nombre de lignes chute à environ 90. On gagne en clarté.
Ceci va servir de pense bête pour les différentes commandes permettant d’exécuter cette tâche.

Pour toutes les commandes (grep, egrep, sed, perl…), le meilleur moyen est d’utiliser les expressions régulières.

Grep

egrep -v '^(#|$)'  /etc/samba/smb.conf
grep -E -v '^(#|$)'  /etc/samba/smb.conf

# : n’affiche pas les lignes commençant par un dièse

$ : n’affiche pas le caractère de contrôle de fin de ligne. Si une ligne commence (^) par un contrôle de fin de ligne, c’est une ligne vide.

Il est également possible que le délimiteur de commentaires soit placé non pas en début de ligne mais en retrait (espace ou tabulation), ou que d’autres caractères délimiteurs soient présents, comme le point virgule (;).

grep -E -v '^(#|;|$|[ ]*#)' /etc/samba/smb.conf

Sed

La syntaxe de la commande sed est un peu plus complexe.

sed -e '/^[ ]*#/d' -e '/^$/d' /etc/samba/smb.conf

On élimine en premier les lignes commençants par un espace ou un signe dièse, puis on élimine toutes les lignes vides.

Bien entendu comme dans l’exemple précédent vous pouvez étoffer votre commande en incluant d’autres motifs, comme le point virgule, ce qui donnerait :

sed -e '/^[ ]*#/d' -e '/^[ ]*;/d' -e '/^$/d' /etc/samba/smb.conf

Perl

perl -ne ‘print unless /^\s*[;\$#]|^$/’ fichier_config