Печать файлов без комментариев и пустых строк в Linux
Когда вы отображаете исходный код или содержимое файла конфигурации в стандартном выводе с помощью команды cat
, вы увидите все в этом файле, включая закомментированные и пустые строки, верно? Да. Что делать, если вы хотите просмотреть только некомментированные строки, игнорируя все остальные? Ну а закомментированные и пустые строки из вывода файла можно игнорировать. В этом кратком руководстве мы увидим, как печатать файлы без комментариев и пустых строк в Linux. Это может быть полезно, если вы хотите быстро просмотреть файл конфигурации, содержащий множество комментариев и пустых строк.
Что такое комментарии в компьютерном программировании?
Если вы посмотрите исходный код или файл конфигурации, вы заметите, что многие строки начинаются со звездочки "*"
, хеша "#"
или косой черты. "/"
или точку с запятой ";"
. Эти строки называются Комментарии. В компьютерном программировании комментарий — это удобочитаемое описание или аннотация, используемая для пояснения назначения кода. Они помогают пользователям и другим программистам легко понять, что делает код. Обычно комментарии и пустые строки игнорируются компиляторами и интерпретаторами. Они предназначены только для программистов. Синтаксис комментариев различается в разных языках программирования.
Теперь давайте посмотрим, как исключить или пропустить эти комментарии и пустые строки и отобразить только те строки, которые не прокомментированы.
Печать файлов без комментариев и пустых строк в Linux
Позвольте мне показать вам содержимое файла sources.list
моей системы Ubuntu:
cat /etc/apt/sources.list
Пример вывода:
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
Вы заметили, что многие строки закомментированы символом «#»? Это делает файл менее читабельным. Это всего лишь небольшой файл, поэтому в этом нет ничего страшного. Но когда вы читаете очень длинные файлы конфигурации, например «httpd.conf» или «php.ini», вам придется просмотреть множество комментариев и пустых строк, и немного сложно определить, какие строки активны. а какие нет.
Чтобы отфильтровать все комментарии и пустые строки от отображения в выходных данных файла, используйте команду grep, как показано ниже:
grep "^[^#*/;]" /etc/apt/sources.list
Здесь,
- первый символ
^
указывает начало строки в данном файле, т. е./etc/apt/sources.list
. [^#*/;]
— будут отображаться все строки, начинающиеся с любых символов, кроме этих четырех символов"#"
," *"
,"/"
,";"
. Другими словами, все строки, начинающиеся с символов"#"
,"*"
,"/"
,";"
будет исключен из вывода.
Пример вывода приведенной выше команды:
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
Видеть? Все комментарии и пустые строки исчезли. Теперь вывод вполне читаем.
Посмотрите на следующий скриншот:
Печать файлов без комментариев и пустых строк с помощью команды grep в Linux
Слева вы видите содержимое файла с комментариями и пустыми строками. Справа все комментарии и пустые строки игнорируются командой "grep"
.
Я предпочитаю использовать grep для фильтрации ненужных строк, отображаемых в выводе. Вы также можете сделать это с помощью команд awk
и sed
.
Чтобы распечатать содержимое файла, исключая все комментарии и пустые строки, с помощью команды "awk"
, выполните:
awk '$1 ~ /^[^;#]/' /etc/apt/sources.list
Пример вывода:
Игнорировать закомментированные и пустые строки из вывода файла с помощью команды awk.
Чтобы отобразить начало строк без комментариев с помощью команды "sed"
, выполните:
sed -e '/^#/d' /etc/apt/sources.list
Дополнительные сведения об использовании см. на странице руководства соответствующей команды.
man awk
man grep
man sed
Надеюсь это поможет.