Вывести в shell строки, не содержащие
Хочу вывести содержимое документа без комментариев. Комментарии традиционно начинаются с "#". Знаю, как вывести только комментарии, например, через sed: sed -n '/#/p' filename, a вот совершить обратное действие проблема. Возможно, есть вариант решения через awk
Ответы (2 шт):
Как-то так:
# 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
Знаю, как вывести только комментарии, например, через 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.
/#/ — это спецификация адреса (адресует все строки, содержащие символ #). добавляете после неё ! — условие инвертируется.