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


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


0

sed -e 's/#.*$//' -e '/^$/d' filename > result

Ответов: 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.

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

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

задан
4 дня 14 часов назад
просмотрен
14