Удалить пустые строки в редакторе vi

Часто стандартные конфигурационные файлы программных пакетов (например, Asterisk) содержат в себе всю необходимую документацию и примеры настройки. Это полезно, но затрудняет чтение файла или делает его практически невозможным.

Лучшим решением в таких случаях может быть создание копии конфига и удаление всего ненужного содержимого из самого файла, используемого программным пакетом. Проще всего сделать это в vi.

vi удалить пустые строки

Например, при настройке телефонии на базе Asterisk приходится редактировать extentions.conf, содержащий несколько тысяч строк комментариев и множество пустых строк

От них можно просто избавиться

vi extentions.conf

Начнем с пустых строк — вводим следующую комбинацию:

:g/^$/d

^ — символ обозначающий в bash начало строки

$ — символ обозначающий конец строки

d — необходимое действие — удалить

Поскольку между началом строки и концом не задано никаких символов под регулярное выражение подпадут все пустые строки и будут удалены.

Аналогичным образом можно избавиться от комментариев.

Если в конфиге для закомментированных строк используется точка с запятой:

:g/^;/d

Если используется решетка:

:g/^#/d

Можно убрать все строки с решеткой опустив ^, но тогда под регулярное выражение попадут строки вида

force_update=yes         #update packet

Поэтому стоит использовать выражения с осторожностью, но часто они оказываются очень полезными, и подходят при ручной конфигурации, в скриптах те же действия можно выполнять, например, используя утилиту  sed.