Поиск по сайту:

Печать файлов без комментариев и пустых строк в 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

Надеюсь это поможет.

Статьи по данной тематике