Замена нескольких пустых строк одной пустой строкой в ​​vim / sed

Вопрос более или менее говорит обо всем. Я знаю, что /^$/d удалит все пустые строки, но я не вижу, как сказать «заменить две или более пустых строк одной пустой строкой»,

Есть идеи?

  • Есть ли Vim, как «Окно командной строки» для Bash?
  • Автозаполнение адресов электронной почты в vim
  • vim поиск имени подстрочной переменной с помощью *
  • отключить поддержку мыши в `vim` в среде« gnome-terminal »
  • флажок vim для добавления строки и сохранения
  • Как переключиться на команду редактирования в текстовом редакторе
  • Как переписать строки текста в vi / vim?
  • vim regex для поиска строк, содержащих string1 AND string2
  • 5 Solutions collect form web for “Замена нескольких пустых строк одной пустой строкой в ​​vim / sed”

    Если вы не стреляете в vim или sed для какого-то другого использования, у кота действительно есть простой встроенный способ свернуть несколько пустых строк, просто используйте cat -s .

    Если вы уже были в vim и хотели остаться там, вы могли бы сделать это с помощью внутреннего поиска и замены, выпустив :%s!\n\n\n\+!^M^M!g (The ^ M – это визуальное представление новой строки, вы можете ввести его, нажав Ctrl + v Enter ), или сохраните себя, набрав, просто обстреливая cat :%!cat -s .

    Используйте \n чтобы указать новую строку в шаблоне поиска. Используйте Ctrl + M в заменяющем тексте или обратную ссылку. См :help pattern и :help sub-replace-special (связанный с :help :s ).

     %s/\(\n\n\)\n\+/\1/ 

    Если в Vim просто сделайте это:

     :%!cat -s 

    Использование Perl:

     perl -00 -pe '' 

    -00 командной строки -00 включает режим абзаца slurp on, что означает, что Perl читает текст по частям, а не по строкам.

    Я знаю, что это глупый код, но я решил решить эту проблему менее чем за 10 минут, и это сработало

     for file in /directory/* do originalname=$file us='_' tempname=$file$us echo $originalname mv $originalname $tempname uniq $tempname $originalname rm $tempname done 
    Linux и Unix - лучшая ОС в мире.