vi를 사용하여 검색 패턴 뒤의 줄을 전체적으로 삭제하는 방법은 무엇입니까?

vi를 사용하여 검색 패턴 뒤의 줄을 전체적으로 삭제하는 방법은 무엇입니까?

약 1,000줄 정도의 대용량 파일이 있고 다음이 필요하다고 가정해 보겠습니다.다음 줄을 삭제하세요.특정 패턴을 다음과 같이 부릅니다 somePatern.

상황:

  • /somePattern수동으로 수행할 수 없습니다(검색 및/또는 수동으로 행 아래로 이동하여 삭제할 수 없음 ).
  • 단일 안감이 가장 좋습니다.
  • 패턴이 포함된 줄 다음의 줄은 사라져야 합니다(빈 줄 없음).
  • UNIX와 호환되어야 합니다. (나는 Debian을 사용하지만 UNIX에는 필요합니다. 둘 다 작동한다면 좋을 것입니다.)

또한 누구든지 이 내용과 더 많은 정규식 내용을 배울 수 있는 웹사이트에 대한 링크가 있다면 좋을 것입니다! (하지만 초보형이 아니기 때문에 적어봤습니다. 감사 vimtutor하고 다른 분들의 호의에 감사드립니다.)

답변1

g/somepattern/+d

아래 예에서는 baz가 제거되었습니다. (하지만 Vim으로만 확인했습니다.)

foo     
bar 
somepattern 
baz 
someotherpattern

답변2

구경하다여기섹션 3.2 "작동 범위, 행 주소 지정 및 표시"에서. Vim 명령은 이전 줄 범위를 허용할 수 있는 것 같습니다. 줄 범위를 지정하면 명령 실행을 텍스트의 특정 부분으로만 제한할 수 있습니다.

예를 들어:

/pattern[/]"pattern" 텍스트와 일치하는 다음 줄

?pattern[?]"pattern" 텍스트와 일치하는 이전 줄

관련 정보