/ 를 통해 쉽고 빠르게 원하는 문자열을 하이라이트 서치 할 수 있는 것만 해도 vim은 로그뷰어로서 꽤 쓸만하다.

아주 큰 로그 파일을 볼 때는 하이라이트 서치 외에도 보고 싶은 로그만 남도록 불필요한 부분들을 잘 쳐내는 기술이 필요하다.

  1. 특정 패턴이 존재하는 라인을 삭제
  2. 특정 패턴이 존재하지 않는 라인을 삭제

위의 두가지 기능을 잘 쓸 수 있으면 좋다.
물론 빔에서는 이것들을 쉽게 해낼 수 있다.

그 내용을 설명하기 전에 먼저 패턴을 치환하는 방법을 살펴보자.

:%s/pattern/replace/g

위 명령어는 pattern이란 단어를 찾아 replace로 전부 치환한다.
간단한 패턴이라면 머리 속에 잘 정리해서 한번에 명령을 수행할 수 있다.
하지만 패턴이 복잡하다면 먼저 / 명령어를 통해 패턴이 잘 매치되는지 부터 확인해보아야 할 것이다.
원하는대로 잘 매치가 되고 나면 이제 위 명령어 중 pattern 부분은 생략이 가능하다.
다음처럼 써서 이미 이전에 매치된 패턴을 치환시킬 수 있다.

:%s//replace/g

pattern 부분에 아무 것도 적지 않은 것을 주목해서 봐야한다.
빔은 저렇게 빈 패턴이 들어왔을 때 이전에 / 을 통해 마지막으로 매치시켰던 패턴을 기억하고 그 패턴을 대입해준다.

이제 처음 설명하기로 했던 2가지 기능을 알아보자.

특정 패턴이 존재하는 라인을 삭제

:g/pattern/d

위와 같은 간단한 입력을 통해서 특정 패턴이 존재하는 라인들을 삭제할 수 있다.
물론 위에서 설명한 것처럼 먼저 원하는 패턴을 한번 매치시켜놓고,

:g//d

라고 쓰는 것이 더 편리하다.

:g/pattern/p

위 명령은 특정 패턴이 존재하는 라인들만을 출력해준다.

특정 패턴이 존재하지 않는 라인을 삭제

반대로 특정 패턴이 존재하는 라인만을 남겨놓고 싶은 경우도 있다.

:v/pattern/d

물론

:v//d

역시 가능하다.

v는 invert를 의미한다. 즉 :v//d는 선택되지 않은 패턴들을 삭제하겠다는 명령이 된다.

이 기능들을 얼마나 잘 사용하느냐는 정규표현식의 능숙도에 달려있다.
원하거나 원하지 않은 라인을 쳐내기 위해 정규식으로 매칭 시키는 기술은 따로 연습해야 한다.
정규 표현식 완전 해부와 실습을 추천한다.

관련 글: