2015-01-13 5 views
0

XML 파일에서 값이있는 속성을 두 개만 가져 오려면 파일에서 vimgrep을 수행하려고합니다. 지금까지 완전한 라인을 얻을 수 있고 그룹의 도움을 받아 더 나은 디스플레이를 원합니다.- 파일에서 데이터 그룹을 가져 오는 방법은 무엇입니까?

: vimgrep key = % | copen

^이 명령에 그룹화 가능성을 "()"....로 추가하고 싶지만 잠시 동안 성공하지 못했습니다.

내가 함께 일하고 있어요 그 파일의

부분 "예상 된 결과"에 설명 된대로 결과를하기 위해 당신의 도움을 주셔서 감사합니다 것

:


 
<policy name="Menu_Controls" class="User" displayName="$(string.Menu_Controls)" explainText="$(string.IE_ExplainMenu_Controls)" presentation="$(presentation.Menu_Controls)" key="Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\AllowedControls"> 
 
     <parentCategory ref="AdminApproved" /> 
 
     <supportedOn ref="SUPPORTED_IE5" /> 
 
     <elements> 
 
     <boolean id="MCSiMenu" valueName="{275E2FE0-7486-11D0-89D6-00A0C90C9B67}"> 
 
      <trueValue> 
 
      <decimal value="0" /> 
 
      </trueValue> 
 
      <falseValue> 
 
      <decimal value="1" /> 
 
      </falseValue> 
 
     </boolean> 
 
     <boolean id="PopupMenu_Object" valueName="{7823A620-9DD9-11CF-A662-00AA00C066D2}"> 
 
      <trueValue> 
 
      <decimal value="0" /> 
 
      </trueValue> 
 
      <falseValue> 
 
      <decimal value="1" /> 
 
      </falseValue> 
 
     </boolean> 
 
     <boolean id="Ikonic_Control" valueName="{F5131C24-E56D-11CF-B78A-444553540000}"> 
 
      <trueValue> 
 
      <decimal value="0" /> 
 
      </trueValue> 
 
      <falseValue> 
 
      <decimal value="1" /> 
 
      </falseValue> 
 
     </boolean> 
 
     </elements> 
 
    </policy> 
 
    <policy name="Microsoft_Agent" class="User" displayName="$(string.Microsoft_Agent)" explainText="$(string.IE_Explain_Microsoft_Agent)" presentation="$(presentation.Microsoft_Agent)" key="Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\AllowedControls"> 
 
     <parentCategory ref="AdminApproved" /> 
 
     <supportedOn ref="SUPPORTED_IE5" /> 
 
     <elements> 
 
     <boolean id="Microsoft_Agent_Control" valueName="{D45FD31B-5C6E-11D1-9EC1-00C04FD7081F}"> 
 
      <trueValue> 
 
      <decimal value="0" /> 
 
      </trueValue> 
 
      <falseValue> 
 
      <decimal value="1" /> 
 
      </falseValue> 
 
     </boolean> 
 
     </elements> 
 
    </policy>

내 예상 결과 :

name="Menu_Controls" key="Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\AllowedControls" 
 
name="Microsoft_Agent" key="Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\AllowedControls"

감사합니다. toshi

답변

0

을 할 수있는 두 개의 CMDS :

v/<policy /d 

%s/.* \(name="[^"]*"\).*\(key="[^"]*"\).*/\1 \2/g 
+0

안녕하십니까, 내 모든 파일에서 첫 번째 행 강조 정책. 첫 줄을 설명해 주시겠습니까? 저는 이해합니다 : v -> visual, /<정책, 에 대한 검색 그러나 약/d? – toshi

+0

@toshi 오, 미안, 내 잘못, 그것은'v' 비주얼이 아니라, 나는 "command : v"를 의미했다. 그래서 그것은': v /<......./ d'이어야합니다. – Kent

+0

답장을 보내 주셔서 감사합니다 ..... 왜 내 모든 원하지 않는 줄이 아직 파일에 남아 있는지;) 어쨌든, 당신의 대답은 정확하게 내가 뭘 찾고 있었는지, 그룹들로 대체 했어. – toshi

0

ExtractMatches plugin은 일치 항목을 추출하여 스크래치 버퍼에 넣을 수있는 :YankMatches 명령을 제공합니다. 한 - 라이너 :

:execute 'YankMatches \<\%(name\|key\)="[^"]*"' | new | put! 

결과 :

name="Menu_Controls" 
key="Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\AllowedControls" 
name="Microsoft_Agent" 
key="Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\AllowedControls" 
+0

도움을 주셔서 감사합니다. 플러그인을 사용해 보겠습니다. – toshi

0

당신은 :vimgrep과 quickfix를 발견하면 정말 도움이되는 목록을 editqf.vim plugin을 사용하여 grep 결과의 퀵 픽스 목록을 수정하고 예를 들어 외부의 물건을 제거하기위한 @ Kent의 대답에 제공된 :%s 명령의 변형입니다.

관련 문제