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