2014-10-09 5 views
0

프로젝트 목적 상 grep, awk 또는 print가 아닌 sed 만 사용할 수 있습니다.sed를 사용하여 여러 줄 제거

어떻게하면 bbbb 또는 eeee에서 패키지 이름의 끝까지 sed를 사용하여 줄 시작을 제거 할 수 있습니까? 각 패키지의 끝은 고유하지 않으며 임의 번호가 아니며 줄 번호도 임의로, 때로는 9 줄, 때때로 4 또는 5가됩니다.

이 작업을 수행 할 수 없습니다. 내가 입력을 제어 할 수있는 유일한 것은 시작하기위한 패키지 이름이지만, 패키지의 끝까지 제거하려면 어떻게해야합니까?

  Package: aaaa 
      Status: 
      Priority: 
      Section: 
      Installed-Size: 
      Maintainer: 
      Architecture: 
      Version: 
      Depends: 
      Description: 
      Name: 
      Icon 

      Package: bbbb 
      Status: 
      Priority: 
      Section: 
      Installed-Size: 
      Maintainer: 
      Architecture: 
      Version: 
      Depends: 
      Description: 
      Name: 
      Homepage: 


      Package: cccc 
      Status: 
      Priority: 
      Section: 
      Depends: 
      Description: 
      Name: 
      Homepage: 


      Package: dddd 
      Status: 
      Priority: 
      Section: 
      Installed-Size: 
      Maintainer: 
      Architecture: 
      Version: 
      Depends: 
      Description: 
      Name: 
      Homepage: 


      Package: eeee 
      Status: 
      Priority: 
      Section: 
      Installed-Size: 
      Maintainer: 
      Architecture: 
      Version: 




      Package: dddd 
      Status: 
      Priority: 
      Section: 
      Installed-Size: 
      Maintainer: 
      Architecture: 
      Text: 




      Package: ffff 
      Status: 
      Priority: 
      Section: 
      Installed-Size: 
      Maintainer: 
      Architecture: 
      Version: 
      Depends: 
      Description: 
      Name: 
      Link: 



      Package: ggg 
      Status: 
      Priority: 
      Section: 
      Installed-Size: 
      Depends: 
      Description: 
      Name: 
      Homepage: 
+0

질문을 다시하십시오. 그것은 당신이 성취하려는 것을 완전히 이해할 수 없습니다. 어쩌면 원하는 출력이 도움이 될 것입니다 ... – St0fF

+1

그리고 당신이 시도한 것과 당신이 검색 한 것을 공유하십시오. SO는 무료 코드 서비스가 아닙니다. – Tensibai

+0

그리고 당신은 대답은 이미 [이 스레드] (http://unix.stackexchange.com/questions/10226/multiline-pattern-match-using-sed-awk-or-grep)에 적용됩니다. – Tensibai

답변

1
sed '/Package: bbbb/,/^ *$/d' YourFile 

당신의 bbbb는 빈 줄과 pacakage (샘플에서 볼 다른 occurance)와 paragraphe 끝의 이름입니다 가정

+0

그것은 효과가있다. 고맙습니다. 그건 그렇고 숙제가 아니라 다른 방법을 시도했지만 그렇지 않습니다. 그래서 나를위한 새로운 것. 공유해 주셔서 감사합니다. –

1
awk '/bbbb/{b=1;next}b==1&&/Package/{b=0}b==0' input.txt 

선을 제거 (에만 허용 공간의 문자입니다) bbbb에서 다음 찾을 때까지 Package 텍스트

+0

OP는이 'Project'에 awk를 사용할 수 없다고 말했습니다. –

+0

@Jidder, awk로 태그되었으므로 태그가 다시 지정됩니다. – Ashkan

+0

첫 번째 문장에서는 awk 솔루션을 원하지 않는다고 말합니다. 그것은 분명히 혼란 스러웠습니다. –

관련 문제