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) 

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! 
  • Поля синтаксиса подсветки синтаксиса Vim
  • Блокировать движение для любого типа скобок?
  • VIM: Показать шестнадцатеричный код Inline
  • Как я могу использовать vim для удаления первых нескольких символов выбранных строк с помощью команд?
  • Избегайте заполнения имен каталогов при смене буферов vim.
  • Vim, netrw plugin tmp файлы, не загруженные на сервер
  • Замените несколько строк другой строкой в ​​нескольких файлах
  • В Vim, как я могу удалить весь текст из текущей позиции курсора до следующего пробела?
  • Доступ к последней выполненной команде и ее изменение перед выполнением в VIM
  • Является ли конвенция, что курсор «over» персонажа в нормальном режиме произвольный?
  • Как сообщить vim, чтобы НЕ ИЗМЕНИТЬ ФАЙЛ, когда я возвращаюсь к нему
  • Vim - Остановить фигурные скобки навигация от оставленных отметок
  • Linux и Unix - лучшая ОС в мире.