큰 로그 파일로 더 빨리 찾는 방법은 무엇입니까?


15

나는 종종 매우 큰 로그 파일 (> 3GB)을 다루고 있습니다. 나는이 파일들에서 성능 저하가 끔찍하다는 것을 알았습니다. 종종 파일 중간을 뛰어 넘고 싶지만 15M 줄 앞으로 줄이려고하면 몇 분이 걸립니다.

내가 생각하는 문제는 파일에서 '\ n'문자를 스캔 할 필요가 적지 만 너무 오래 걸린다는 것입니다.

명시 적 오프셋을 찾는 방법이 있습니까? 예를 들어 파일에서 15 억 바이트 오프셋을 찾으십시오. 이 작업은 몇 배 더 빠릅니다. 그러한 능력을 제공하지 못하는 다른 도구가 있습니까?


금지 된 캐릭터를 위해 파일을 감추고 있다면, 앞서 언급 한 캐릭터를 찾은 후에이를 제거 할 것이라는 정당한 가정입니까? 그렇다면 제공 할 수 있습니다perl -pi -e 's/\n//g;' <filename>
Mike Pennington

죄송합니다, 탈지가 잘못된 단어였습니다. 스캔을 사용해야합니다. 설계 상 줄 바꿈 검색 (\ n)이 적습니다. 이 스캔은 대용량 파일에서 시간이 오래 걸립니다.
UsAaR33

답변:


21

이처럼 줄을 세지 않아도됩니다. less -n

50 %와 같은 특정 장소로 ​​이동하려면 less -n +50p /some/log1.5GB 로그 파일을 사용하는 것이 좋습니다.

편집 : 특정 바이트 오프셋의 경우 : less -n +500000000P ./blah.log


1
라인 카운팅은 결코 문제가되지 않았다. escp / ctrl-c를 사용할 수 있습니다. 그러나 이것은 실제 답변입니다. P는 특정 바이트 오프셋으로 이동합니다!
UsAaR33

5

덜 페이저 인 것은 본질적으로 선 지향적입니다. 시작할 때 파일이 크면 "counting line number"라고 말하고 ESC 키를 눌러 중지하지만 그렇지 않으면 행을 수행합니다. 그것이하는 일입니다.

파일의 한가운데로 똑바로 건너 뛰고 시작을 건너 뛰려면 항상 시작을 지나갈 수 있습니다. 나는 같은 것을 할 것이다 tail -c +15000000 /some/log | less.


3
당신은 의미 tail -c ...하거나 이상한 last명령 을 가지고 있습니다 .
Alan Curry

이 전략의 문제점은 더 이상 전체 파일을 더 이상 찾을 수 없다는 것입니다 (특정 메시지 검색 등)
Sekenre

@ AlanCurry : 그것은 단지 다른 철자입니다 ... <grin>
womble

0

less 로케일 설정에서 약간의 오버 헤드가있는 것 같습니다.

ASCII 전용 문자를 사용하는 경우 다음을 사용하여 비트 속도를 높일 수 있습니다.

LC_ALL=C less big-log-file.log

필자의 경우 처리량이 ~ 30M ib / s에서 ~ 50 Mib / s로 증가했습니다 (속도는 CPU 바운드 임)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.