@ paxdiablo имеет хороший ответ, но его можно улучшить.
(1) Предложение '/^$/d'
соответствует только 100% пустым строкам.
Если вы хотите также сопоставить строки, которые полностью пропущены (пробелы, табуляции и т. Д.), Используйте вместо этого:
'/^\s*$/d'
(2) Предложение 's/#.*$//'
соответствует только тем строкам, которые начинаются с символа #
в столбце 0.
Если вы хотите также сопоставить строки, которые имеют только пробел перед первым #
, используйте это вместо:
'/^\s*#.*$/d'
Приведенные выше критерии могут быть не универсальными (например, в пределах блока HEREDOC или в многострочной строке Python различные подходы могут быть значительными), но во многих случаях традиционное определение «пустых» строк включает только пробелы, и строки "комментария" включают пробел-затем- #
.
(3) Наконец, по крайней мере в OSX решение @paxdiablo, в котором первое предложение превращает строки комментариев в пустые строки, а второе предложение очищает пустые строки (включая то, что изначально было комментариями), не работает. Кажется, более удобно переносить оба пункта /d
для удаления действий, как я сделал.
Пересмотренная команда, включающая вышеупомянутое:
sed -e '/^\s*#.*$/d' -e '/^\s*$/d' inputFile