Вывести в shell строки, не содержащие

Хочу вывести содержимое документа без комментариев. Комментарии традиционно начинаются с "#". Знаю, как вывести только комментарии, например, через sed: sed -n '/#/p' filename, a вот совершить обратное действие проблема. Возможно, есть вариант решения через awk


Ответы (2 шт):

Автор решения: Ainar-G

Как-то так:

# Remove comment-only lines.
/^[[:space:]]*#.*$/d

# Remove comments.
s/[[:space:]]*#.*$//

Пример до:

non-comment 1 and don't remove the line below

# comment
  # comment with space
non-comment 2 # and a comment

Пример после:

non-comment 1 and don't remove the line below

non-comment 2
→ Ссылка
Автор решения: aleksandr barakin

Знаю, как вывести только комментарии, например, через sed: sed -n '/#/p' filename, a вот совершить обратное действие…

просто инвертируйте условие:

$ sed -n '/#/!p' файл

цитата из документации:

Appending the '!' character to the end of an address specification (before the command letter) negates the sense of the match.

/#/ — это спецификация адреса (адресует все строки, содержащие символ #). добавляете после неё ! — условие инвертируется.

→ Ссылка