Když zobrazíte zdrojový kód nebo obsah konfiguračního souboru ve standardním výstupu pomocí cat
příkaz, uvidíte vše v tom souboru včetně komentovaných a prázdných řádků, že? Ano. Co když chcete zobrazit pouze nekomentované řádky a všechny ostatní ignorovat? No, je možné ignorovat komentované a prázdné řádky z výstupu souboru. V tomto krátkém návodu uvidíme, jak tisknout soubory bez komentářů a prázdných řádků v Linuxu. To může být užitečné, když chcete rychle zkontrolovat konfigurační soubor, který obsahuje spoustu komentářů a prázdných řádků.
Co jsou komentáře v počítačovém programování?
Pokud se podíváte do zdrojového kódu nebo konfiguračního souboru, všimnete si, že mnoho řádků začíná buď hvězdičkou "*"
nebo hash "#"
nebo lomítko "/"
nebo středník ";"
. Tyto řádky jsou známé jako Komentáře . V počítačovém programování je komentář člověkem čitelný popis nebo anotace používaná k objasnění účelu kódu. Pomáhají uživatelům a dalším programátorům snadno pochopit, co kód dělá. Obecně budou komentáře a prázdné řádky kompilátory a interprety ignorovány. Jsou pouze pro programátory. Syntaxe komentářů se v různých programovacích jazycích liší.
Nyní se podívejme, jak vyloučit nebo přeskočit tyto komentáře a prázdné řádky a zobrazit pouze řádky, které nejsou komentovány.
Tisk souborů bez komentářů a prázdných řádků v Linuxu
Dovolte mi ukázat vám obsah sources.list
soubor mého systému Ubuntu:
$ cat /etc/apt/sources.list
Ukázkový výstup:
# 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
Viděli jste, že mnoho řádků je zakomentováno znakem „#“? Díky tomu je soubor méně čitelný. Toto je jen malý soubor, takže to není velký problém. Ale když čtete opravdu dlouhé konfigurační soubory, například "httpd.conf" nebo "php.ini", budete muset procházet spoustou komentářů a prázdných řádků a je trochu matoucí najít, které řádky jsou aktivní a které nejsou.
Chcete-li odfiltrovat zobrazení všech komentářů a prázdných řádků ve výstupu souboru, použijte grep příkaz jako níže:
$ grep "^[^#*/;]" /etc/apt/sources.list
Tady,
- první
^
znak označuje začátek řádku v daném souboru, tj./etc/apt/sources.list
. [^#*/;]
- zobrazí všechny řádky začínající jinými znaky než těmito čtyřmi znaky"#"
,"*"
,"/"
,";"
. Jinými slovy, všechny řádky začínající znaky"#"
,"*"
,"/"
,";"
bude z výstupu vyloučen.
Ukázkový výstup výše uvedeného příkazu:
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
Vidět? Všechny komentáře a prázdné řádky jsou pryč. Nyní je výstup docela čitelný.
Podívejte se na následující snímek obrazovky:

Na levé straně vidíte obsah souboru s komentáři a prázdnými řádky. Vpravo jsou všechny komentáře a prázdné řádky ignorovány pomocí "grep"
příkaz.
Dávám přednost způsobu grep, jak filtrovat nepotřebné řádky zobrazené ve výstupu. Můžete to udělat také pomocí awk
a sed
také příkazy.
Chcete-li vytisknout obsah souboru s výjimkou všech komentářů a prázdných řádků pomocí "awk"
příkaz, spusťte:
$ awk '$1 ~ /^[^;#]/' /etc/apt/sources.list
Ukázkový výstup:

Zobrazení řádků začíná bez komentáře pomocí "sed"
příkaz, spusťte:
$ sed -e '/^#/d' /etc/apt/sources.list
Další podrobnosti o použití naleznete na manuálové stránce příslušného příkazu.
$ man awk
$ man grep
$ man sed
Doufám, že to pomůže.