Vim: объединить регулярные выражения

Я вставил журнал, созданный rsync, запущенным через Cygwin на сервере Windows 2008. Я переписываю данные на новый файловый сервер (Synology), и после обрезки чего-либо, что не является ошибкой, у меня есть несколько различных ошибок, с которыми приходится иметь дело, и все они чересстрочны.

Я хочу быстро и легко, желательно с помощью vim, разделить разные типы ошибок, так что все строки, начинающиеся с «rsync: send_files (blah blah)», объединяются, и все строки, начинающиеся с " файл исчез: «объединены и т. д.

В основном я пытаюсь найти способ соответствия регулярному выражению, yank / delete всех соответствующих строк, а затем вставлять их либо в один и тот же файл, но все в одном месте или в новом файле / буфере.

EDIT: мне пришла в голову мысль. Если бы я запустил сортировку по этим данным, это, вероятно, сделало бы то, что я хотел. Я мог бы сделать это с помощью внешних инструментов, но возможно ли это сделать внутри vim, либо вызвав сортировку внутри vim, либо еще лучше, используя инструменты в собственной среде vim. На самом деле я использую это как упражнение для меня в обучении тому, как лучше использовать vim, а не другие инструменты.

Небольшая выборка файла журнала с некоторой информацией, отредактированной:

rsync: send_files failed to open "/cygdrive/E/Users/SharedFiles/3DS SALES/3DS MARKETING/PORTFOLIOS/2012 - Portfolios/Signage"XXXXXXXX Full Res photos/xxxxx xx sky/.DS_Store": Permission denied (13) file has vanished: "/cygdrive/E/Users/SharedFiles/3DS SALES/CURRENT SALES/xxxxxxxxx xxx xxxxx xxxxx xxxx - xxxx/02_PROPOSAL-QUOTATION/15-002 - xxxx xxxx xxxx - Replacement Private Fuction Event Board.xlsx" rsync: opendir "/cygdrive/E/Users/SharedFiles/3DS SALES/CURRENT SALES/Archived Projects/ARCHIVES -xxxxx light/Hootsuite xxxxxx Info" failed: Permission denied (13) rsync: opendir "/cygdrive/E/Users/SharedFiles/3DS STAFF/Cortney/xxxxx/MANUAL/Support Files/xxx/Photos-Jan-2013" failed: Permission denied (13) file has vanished: "/cygdrive/E/Users/SharedFiles/3DS STAFF/Reg/2012 - DEAD PROJECTS/2213-xxxxxx&am;C 60x114-5-HR_pdf/xxxxxx 60 x114.5 _HR.pdf" file has vanished: "/cygdrive/E/Users/SharedFiles/3DS STAFF/Reg/2012 - DEAD PROJECTS/2213-xxxxxx&am;C 60x114-5-HR_pdf/xxxxxx 47 x94_HR.pdf" Time value of 3DS STAFF/X-employees/xxxxxxx/Jobs- do not remove/1OLD FILES/JM/Jade/xxxxx logo_cmyk.ai-print on paper.eps truncated on receiver. Time value of 3DS STAFF/X-employees/xxxxxx/Jobs- do not remove/1OLD FILES/JM/Jade/xxxx logo_rgb.ai-website.eps truncated on receiver. file has vanished: "/cygdrive/E/Users/SharedFiles/3DS STAFF/X-employees/xxxxx/Found on iMac/xxxxxx FOLDER/Databases " Presentations " Portfolios/Databases/Database C .xlsx" file has vanished: "/cygdrive/E/Users/SharedFiles/CURRENT FILES/12050 - xxxxx Canada - xxxxx National Park/ARTWORK DRAWINGS/xxxxx Graphic Layouts/Batch 4 pdfs for Trish/kathy's Batch 4 pdfs for xxxxx/Links/1 =1' person .eps" rsync: opendir "/cygdrive/E/Users/SharedFiles/CURRENT FILES/12050 - xxxxx Canada - xxxxx National Park/MANUAL/03_ xxxxx Final Manual_June-2014/ MANUAL FOR CLIENT" failed: Permission denied (13) rsync: opendir "/cygdrive/E/Users/SharedFiles/CURRENT FILES/12050 - xxxxx Canada - xxxxx National Park/MANUAL/03_ xxxxx Final Manual_June-2014/SECTION 2.0-Exhibits" failed: Permission denied (13) rsync: opendir "/cygdrive/E/Users/SharedFiles/CURRENT FILES/12050 - xxxxx Canada - xxxxx National Park/MANUAL/03_ xxxxx Final Manual_June-2014/SECTION 7.0_Appendices/Appendix E - Artifact Conservation and Maintenance Manual" failed: Permission denied (13) 

  • Vim: замените всю строку, начинающуюся с строки строкой
  • Добавление цветовой схемы в Vim
  • обновить измененное содержимое файла, открытого в vi (m)
  • Vim - привязать ключ к команде bash
  • Почему мне нужно нажать пробел после команды в Vim?
  • Редактирование последовательности полей в vim
  • Скопировать и вставить несколько файлов с помощью vim?
  • Vim: выйдите из режима замены одиночного символа с помощью <CC> при использовании `nnoremap <CC> <silent> <CC>`
  • 3 Solutions collect form web for “Vim: объединить регулярные выражения”

    Используйте redir для перенаправления на новый файл:

     :redir > rsync.log :g/^rsync/ :redir > file_vanished.log :g/^file/ :redir END :q cat rsync.log rsync: send_files failed to open "/cygdrive/E/Users/SharedFiles/3DS SALES/3DS MARKETING/PORTFOLIOS/2012 - Portfolios/Signage"XXXXXXXX Full Res photos/xxxxx xx sky/.DS_Store": Permission denied (13) rsync: opendir "/cygdrive/E/Users/SharedFiles/3DS SALES/CURRENT SALES/Archived Projects/ARCHIVES -xxxxx light/Hootsuite xxxxxx Info" failed: Permission denied (13) rsync: opendir "/cygdrive/E/Users/SharedFiles/3DS STAFF/Cortney/xxxxx/MANUAL/Support Files/xxx/Photos-Jan-2013" failed: Permission denied (13) rsync: opendir "/cygdrive/E/Users/SharedFiles/CURRENT FILES/12050 - xxxxx Canada - xxxxx National Park/MANUAL/03_ xxxxx Final Manual_June-2014/ MANUAL FOR CLIENT" failed: Permission denied (13) rsync: opendir "/cygdrive/E/Users/SharedFiles/CURRENT FILES/12050 - xxxxx Canada - xxxxx National Park/MANUAL/03_ xxxxx Final Manual_June-2014/SECTION 2.0-Exhibits" failed: Permission denied (13) rsync: opendir "/cygdrive/E/Users/SharedFiles/CURRENT FILES/12050 - xxxxx Canada - xxxxx National Park/MANUAL/03_ xxxxx Final Manual_June-2014/SECTION 7.0_Appendices/Appendix E - Artifact Conservation and Maintenance Manual" failed: Permission denied (13) 

    Вы можете использовать :redir для этого:

      *: redi * *: redir *
     : redi [r] [!]> {file} Перенаправить сообщения в файл {файл}.  Сообщения, которые
                             вывод команд записывается в этот файл,
                             пока перенаправление не закончится.  Сообщения также остаются
                             показанный на экране.  Когда включено [!],
                             существующий файл перезаписывается.  Когда [!] Опущено,
                             и {file} существует, эта команда завершается с ошибкой.
                             Только один «redir» может быть активным одновременно.  Звонки на
                             «redir» закроет любое активное перенаправление перед
                             начиная перенаправление к новой цели. 

    Итак, чтобы записать нужные сообщения и добавить их в текущий файл:

     :redir @+ :g/vanished/ :g/send_files/ :g/any_other_regex_you_want/ :redir END "+P 

    Это отправит регулярные выражения в регистр буфера обмена ( @+ ), а затем вставляет их в текущий документ: « + P.

    Вы можете использовать встроенный список быстрого списка, чтобы собрать все соответствующие строки, используя :vimgrep . Например:

     :vimgrep /^rsync: / % :copen 

    Альтернатива плагинов

    Мой плагин ExtractMatches предоставляет (среди прочего) команду :GrepToReg . С его помощью вы можете собирать совпадающие строки в регистре, а затем вставлять их в новый буфер нуля:

     :GrepToReg /^rsync:/ :new | put! 
    Interesting Posts

    Изменить имя хоста – Bash Prompt

    Как преобразовать PDF-файл из серого в черно-белый?

    nginx обратный прокси для jenkins, возвращающий 404

    Какой файл запуска используется моей оболочкой?

    Как идиоматические программы Unix обнаруживают, какой префикс они установлены?

    Измените размер раздела без потери данных?

    Строка Keep, содержащая X в первых двух полях

    Автоматизация монтирования без пароля linux для монтирования удаленной файловой системы cifs

    Рабочая станция Fedora 25: Anaconda выбрасывает ошибку Traceback во время установки

    GNOME отказывается от обновлений, не связанных с безопасностью – это снижает безопасность существующих сторонних приложений?

    Были ли все команды Unix переписаны в Linux?

    VIM: показать все строки, отредактированные в сеансе

    Как разблокировать файловую систему только для чтения на дистрибутиве Linux OpenWRT?

    Являются ли cp -r и cp -R одинаковыми?

    Что такое файл ключа kerberos keytab, используемый для аутентификации Kerberos в UNIX / AD?

    Linux и Unix - лучшая ОС в мире.