Lorsque vous affichez le contenu d'un code source ou d'un fichier de configuration dans la sortie standard à l'aide de cat
commande, vous verrez tout dans ce fichier, y compris les lignes commentées et vides, n'est-ce pas ? Oui. Que faire si vous souhaitez afficher uniquement les lignes non commentées, en ignorant toutes les autres ? Eh bien, il est possible d'ignorer les lignes commentées et vides d'une sortie de fichier. Dans ce petit guide, nous verrons comment imprimer des fichiers sans commentaires ni lignes vides sous Linux. Cela peut être utile lorsque vous souhaitez examiner rapidement un fichier de configuration contenant de nombreux commentaires et des lignes vides.
Que sont les commentaires en programmation informatique ?
Si vous examinez un code source ou un fichier de configuration, vous remarquerez que de nombreuses lignes commencent par un astérisque "*"
ou un dièse "#"
ou une barre oblique "/"
ou un point-virgule ";"
. Ces lignes sont appelées Commentaires . En programmation informatique, un commentaire est une description ou une annotation lisible par l'homme utilisée pour clarifier l'objectif du code. Ils aident les utilisateurs et les autres programmeurs à comprendre facilement ce que fait le code. Généralement, les commentaires et les lignes vides seront ignorés par les compilateurs et les interpréteurs. Ils sont réservés aux programmeurs. La syntaxe des commentaires varie selon le langage de programmation.
Voyons maintenant comment exclure ou sauter ces commentaires et lignes vides et afficher uniquement les lignes qui ne sont pas commentées.
Imprimer des fichiers sans commentaires ni lignes vides sous Linux
Laissez-moi vous montrer le contenu de sources.list
fichier de mon système Ubuntu :
$ cat /etc/apt/sources.list
Exemple de résultat :
# deb cdrom:[Ubuntu 18.04.2 LTS _Bionic Beaver_ - Release amd64 (20190210)]/ bionic main restricted # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://it-mirrors.evowise.com/ubuntu/ focal main restricted # deb-src http://in.archive.ubuntu.com/ubuntu/ bionic main restricted ## Major bug fix updates produced after the final release of the ## distribution. deb http://it-mirrors.evowise.com/ubuntu/ focal-updates main restricted # deb-src http://in.archive.ubuntu.com/ubuntu/ bionic-updates main restricted ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team. Also, please note that software in universe WILL NOT receive any ## review or updates from the Ubuntu security team. deb http://it-mirrors.evowise.com/ubuntu/ focal universe # deb-src http://in.archive.ubuntu.com/ubuntu/ bionic universe deb http://it-mirrors.evowise.com/ubuntu/ focal-updates universe # deb-src http://in.archive.ubuntu.com/ubuntu/ bionic-updates universe ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team, and may not be under a free licence. Please satisfy yourself as to ## your rights to use the software. Also, please note that software in ## multiverse WILL NOT receive any review or updates from the Ubuntu ## security team. deb http://it-mirrors.evowise.com/ubuntu/ focal multiverse # deb-src http://in.archive.ubuntu.com/ubuntu/ bionic multiverse deb http://it-mirrors.evowise.com/ubuntu/ focal-updates multiverse # deb-src http://in.archive.ubuntu.com/ubuntu/ bionic-updates multiverse ## N.B. software from this repository may not have been tested as ## extensively as that contained in the main release, although it includes ## newer versions of some applications which may provide useful features. ## Also, please note that software in backports WILL NOT receive any review ## or updates from the Ubuntu security team. deb http://it-mirrors.evowise.com/ubuntu/ focal-backports main restricted universe multiverse # deb-src http://in.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse ## Uncomment the following two lines to add software from Canonical's ## 'partner' repository. ## This software is not part of Ubuntu, but is offered by Canonical and the ## respective vendors as a service to Ubuntu users. # deb http://archive.canonical.com/ubuntu bionic partner # deb-src http://archive.canonical.com/ubuntu bionic partner deb http://it-mirrors.evowise.com/ubuntu/ focal-security main restricted # deb-src http://security.ubuntu.com/ubuntu bionic-security main restricted deb http://it-mirrors.evowise.com/ubuntu/ focal-security universe # deb-src http://security.ubuntu.com/ubuntu bionic-security universe deb http://it-mirrors.evowise.com/ubuntu/ focal-security multiverse # deb-src http://security.ubuntu.com/ubuntu bionic-security multiverse
Avez-vous vu que de nombreuses lignes sont commentées avec le caractère "#" ? Cela rend le fichier moins lisible. C'est juste un petit fichier, donc ce n'est pas grave. Mais lorsque vous lisez un très long fichier de configuration, par exemple "httpd.conf" ou "php.ini", vous devrez passer par beaucoup de commentaires et de lignes vides et il est un peu déroutant de trouver quelles lignes sont actives et qui ne le sont pas.
Pour empêcher tous les commentaires et les lignes vides d'être affichés dans la sortie du fichier, utilisez grep commande comme ci-dessous :
$ grep "^[^#*/;]" /etc/apt/sources.list
Ici,
- le premier
^
caractère indique le début de la ligne dans le fichier donné, c'est-à-dire/etc/apt/sources.list
. [^#*/;]
- affichera toutes les lignes commençant par des caractères autres que ces quatre caractères"#"
,"*"
,"/"
,";"
. En d'autres termes, toutes les lignes commençant par les caractères"#"
,"*"
,"/"
,";"
sera exclu de la sortie.
Exemple de sortie de la commande ci-dessus :
deb http://it-mirrors.evowise.com/ubuntu/ focal main restricted deb http://it-mirrors.evowise.com/ubuntu/ focal-updates main restricted deb http://it-mirrors.evowise.com/ubuntu/ focal universe deb http://it-mirrors.evowise.com/ubuntu/ focal-updates universe deb http://it-mirrors.evowise.com/ubuntu/ focal multiverse deb http://it-mirrors.evowise.com/ubuntu/ focal-updates multiverse deb http://it-mirrors.evowise.com/ubuntu/ focal-backports main restricted universe multiverse deb http://it-mirrors.evowise.com/ubuntu/ focal-security main restricted deb http://it-mirrors.evowise.com/ubuntu/ focal-security universe deb http://it-mirrors.evowise.com/ubuntu/ focal-security multiverse
Voir? Tous les commentaires et les lignes vides ont disparu. Maintenant, la sortie est tout à fait lisible.
Regardez la capture d'écran suivante :
Sur le côté gauche, vous voyez le contenu du fichier avec des commentaires et des lignes vides. A droite, tous les commentaires et les lignes vides sont ignorés avec "grep"
commande.
Je préfère la méthode grep pour filtrer les lignes inutiles affichées dans la sortie. Vous pouvez également le faire en utilisant awk
et sed
commandes également.
Pour imprimer le contenu du fichier en excluant tous les commentaires et les lignes vides avec "awk"
commande, exécutez :
$ awk '$1 ~ /^[^;#]/' /etc/apt/sources.list
Exemple de résultat :
Pour afficher les lignes commencent sans commentaires en utilisant "sed"
commande, exécutez :
$ sed -e '/^#/d' /etc/apt/sources.list
Pour plus de détails sur l'utilisation, reportez-vous à la page de manuel de la commande respective.
$ man awk
$ man grep
$ man sed
J'espère que cela vous aidera.