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

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

Есть идеи?

  • Настройка шрифта программирования в RHEL 5 + gvim
  • Интерфейс Vim в полях ввода веб-браузера?
  • Запретить запуск vim в оболочке, если он уже запущен в фоновом режиме
  • Разрешено только одно имя файла
  • vim, чтобы открыть файл под курсором в уже открывшемся окне
  • Есть ли синтаксический файл Vim для вывода приложений CLI на основе ANSI?
  • не может определить команду, которая выполняет команду Explore
  • Как мне настроить настройку vim-pathogen для группы как пользователя без прав root?
  • 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 - лучшая ОС в мире.