vim - power of :g
Computing/vim tips 2009. 7. 28. 18:19팁의 출처 : http://vim.wikia.com/wiki/Power_of_g
회사에서 일을 하다가 trace 파일을 가공해야 할 필요가 생겼다.
다음과 같이 생긴 파일이다 :
[2009-07-28 13:45:36 T-1107208528] LogRecInfoInit :
[2009-07-28 13:45:36 T-1107208528] blablablablablablablablablablablbalablablablablablabl
[2009-07-28 13:45:36 T-1107208528] blablablablablablablablablablablbalablablablablablabl
[2009-07-28 13:45:36 T-1107208528] blablablablablablablablablablablbalablablablablablabl
[2009-07-28 13:45:36 T-1107208528] blablablablablablablablablablablbalablablablablablabl
[2009-07-28 13:45:36 T-1107208528] LogRecInfoInit :
[2009-07-28 13:45:36 T-1107208528] blablablablablablablablablablablbalablablablablablabl
[2009-07-28 13:45:36 T-1107208528] blablablablablablablablablablablbalablablablablablabl
[2009-07-28 13:45:36 T-1107208528] blablablablablablablablablablablbalablablablablablabl
[2009-07-28 13:45:36 T-1107208528] blablablablablablablablablablablbalablablablablablabl
[2009-07-28 13:45:36 T-1107208528] blablablablablablablablablablablbalablablablablablabl
[2009-07-28 13:45:36 T-1107208528] blablablablablablablablablablablbalablablablablablabl
[2009-07-28 13:45:36 T-1107208528] blablablablablablablablablablablbalablablablablablabl
[2009-07-28 13:45:36 T-1107208528] blablablablablablablablablablablbalablablablablablabl
[2009-07-28 13:45:36 T-1107208528] blablablablablablablablablablablbalablablablablablabl
[2009-07-28 13:45:36 T-1107208528] blablablablablablablablablablablbalablablablablablabl
00000000: c2 35 |.5 |
[2009-07-28 13:45:36 T-1107208528] blablablablablablablablablablablbalablablablablablabl
00000000: 74 68 72 33 |thr3 |
[2009-07-28 13:45:36 T-1107208528] blablablablablablablablablablablbalablablablablablabl
00000000: 69 6e 73 65 72 74 20 35 32 30 30 20 20 20 20 20 |insert 5200 |
00000010: 20 20 20 20 | |
[2009-07-28 13:45:36 T-1107208528] blablablablablablablablablablablbalablablablablablabl)
[2009-07-28 13:45:36 T-1107208528] LogRecInfoInit :
[2009-07-28 13:45:36 T-1107208528] blablablablablablablablablablablbalablablablablablabl
.
.
.
요점은, LogRecInfoInit: 라는 로그 이후에 여러 줄에 걸쳐서 정보가 나오는데,,, 이 상태로는 wc 같은 걸 이용해서 카운트를 한다든지 할 수가 없다. 그래서, 앞의 [ ] 안쪽의 부분을 지우고, LogRecInfoInit: 블록을 한줄로 만들어야 하는데.... ㅡ,.ㅡ)));;
이게 한두개가 아니고, 파일이 무려 십만라인이 넘는 파일이다.
간단한 ex 명령어 두 개로 해결했다 :
:g/2009-07-28/norm 0df]x
:g/LogRecInfoInit :/norm VnkJ
요점 :
:g/Pattern/cmd
cmd :
exe
norm ....
자세한 내용은 :help ex-cmd-index