Windows 2008 서버에서 Cygwin을 통해 rsync를 실행하여 생성된 로그를 붙여넣었습니다. 데이터를 새 파일 서버(Synology)에 동기화하고 오류가 아닌 항목을 삭제한 후 처리해야 할 몇 가지 다른 오류가 있는데 모두 인터리브됩니다.
내가 원하는 것은 빠르고 쉽게(바람직하게는 vim을 사용하여) 다양한 오류 유형을 분리하여 "rsync: send_files (blah blah)"로 시작하는 모든 줄이 병합되고 "File gone:"으로 시작하는 모든 줄이 병합되는 것입니다. 기다리다.
기본적으로 정규식을 일치시키고, 모든 관련 줄을 꺼내거나 제거하고, 동일한 파일에 붙여넣고 모두 동일한 위치에 붙여넣거나 새 파일/버퍼에 붙여넣는 방법을 찾으려고 노력하고 있습니다.
편집: 방금 아이디어가 떠올랐습니다. 이 데이터를 정렬하면 내가 원하는 것을 얻을 수 있습니다. 외부 도구를 사용하여 이 작업을 수행할 수 있지만 vim 내에서 sort를 호출하거나 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/J-M/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/J-M/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)
답변1
다음을 위해 사용할 수 있습니다 :redir
:
*:총디* *:총디* :redi[r][!] > {file} 메시지를 {file} 파일로 리디렉션합니다. 이 메시지 명령의 출력은 이 파일에 기록됩니다. 리디렉션이 끝날 때까지. 메시지는 동일하게 유지됩니다. 화면에 표시됩니다. [!]가 포함된 경우, 기존 파일을 덮어썼습니다. [!]가 생략된 경우 그리고 {file}이 있으면 명령이 실패합니다. 한 번에 하나의 ":redir"만 활성화할 수 있습니다. 부르다 ":redir"는 이전의 활성 리디렉션을 모두 닫습니다. 새 대상으로 리디렉션을 시작합니다.
따라서 원하는 메시지를 캡처하여 현재 파일에 추가하려면 다음을 수행하십시오.
:redir @+
:g/vanished/
:g/send_files/
:g/any_other_regex_you_want/
:redir END
"+P
그러면 일치하는 정규식을 클립보드 레지스터( @+
)로 보낸 다음 이를 현재 문서에 붙여넣습니다 "+P.
답변2
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)
답변3
내장된 것을 사용할 수 있습니다.빠른 수정 목록일치하는 행을 모두 수집하려면 :vimgrep
다음을 사용하세요.
:vimgrep /^rsync: / %
:copen
플러그인 대안
내 거일치하는 플러그인 추출무엇보다도 :GrepToReg
명령을 제공합니다. 이를 사용하면 레지스터에서 일치하는 라인을 수집하여 새 스테이징 버퍼에 붙여넣을 수 있습니다.
:GrepToReg /^rsync:/
:new | put!