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) 

  • Есть ли эквивалент режима пробелов в emacs для vim?
  • Как сохранить настройки Vim tabstop в файле?
  • Как я могу отключить нестандартные параметры vim?
  • Графические проблемы в vim
  • Что это за тема vim?
  • Удаление текстовых объектов Word в VIM
  • Vi undo обновленный файл?
  • как понять \ n в vim
  • 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! 
    Linux и Unix - лучшая ОС в мире.