Подтвердить что ты не робот

Могу ли я использовать команду sed для замены нескольких пустых строк на одну пустую строку?

Я знаю, что есть аналогичный вопрос в SO Как заменить несколько пустых строк на одну пустую строку в bash?. Но мой вопрос: может ли это быть реализовано с помощью команды sed?

Спасибо

4b9b3361

Ответ 1

Попробуйте:

sed '/^$/N;/^\n$/D' inputfile

Ответ 2

Вы можете сделать это, сначала удалив пустые строки и добавив пространство строк с помощью команды G:

sed '/^$/d;G' text.txt

Edit2: приведенная выше команда добавит пустые строки между каждым абзацем, если это нежелательно, вы можете сделать:

sed -n '1{/^$/p};{/./,/^$/p}'

Или, если вы не возражаете, что все ведущие пустые строки будут удалены, это может быть написано как:

sed -n '/./,/^$/p'

поскольку первое выражение просто оценивает первую строку и печатает его, если оно пустое.

Здесь: параметр -n подавляет автоматическую печать пространства шаблонов, /./,/^$/ определяет диапазон между по крайней мере одним символом и символом none (т.е. пустое пространство между символами новой строки) и p, чтобы напечатать этот диапазон.