서버와 내 유일한 로그 파일로 문제를 디버깅하려고하면 20GB 로그 파일입니다 (타임 스탬프조차도 없습니다! 사람들은 왜 사용합니까? System.out.println()
이 로깅으로 ?)
grep을 사용하여 347340107 행에서 살펴볼 파일 영역을 찾았습니다.
같은 일을하는 것 외에
head -<$LINENUM + 10> filename | tail -20
… head
로그 파일의 처음 347 백만 행을 읽어야하는 경우 콘솔에 347340100-347340200 행을 덤프하는 빠르고 쉬운 명령이 있습니까?
업데이트 grep이 일치하는 컨텍스트를 인쇄 할 수 있다는 것을 완전히 잊어 버렸습니다 … 이것은 잘 작동합니다. 감사!
답변
GNU-grep을 사용하면 말할 수 있습니다.
grep --context = 10 ...
답변
줄 번호를 알고 있지만 다른 정보가 없으면 다른 두 가지 해결책을 찾았습니다 .
20 ~ 40 행이 필요하다고 가정하면,
sed -n '20,40p;41q' file_name
또는
awk 'FNR>=20 && FNR<=40' file_name
답변
# print line number 52
sed -n '52p' # method 1
sed '52!d' # method 2
sed '52q;d' # method 3, efficient on large files
큰 파일에 효율적인 방법 3
특정 라인을 표시하는 가장 빠른 방법
답변
아니요, 파일은 주소를 지정할 수 없습니다.
텍스트 파일에서 줄 n 의 시작을 찾는 일정한 시간 방법은 없습니다 . 파일을 통해 스트리밍하고 개행을 계산해야합니다.
작업을 수행해야하는 가장 단순하고 빠른 도구를 사용하십시오. 나를 위해, 사용이 head
만드는 훨씬 더 의미 grep
후자는 방법이 더 복잡하기 때문에. 나는 ” grep
느리다” 라고 말하는 것이 아니라 실제로는 그렇지 않지만 head
이 경우 보다 더 빠르면 놀랄 것 입니다. head
기본적으로 버그입니다 .
답변
이건 어떤가요:
tail -n +347340107 filename | head -n 100
나는 그것을 테스트하지 않았지만 그것이 효과가 있다고 생각합니다.
답변
난 그냥 들어가 선호 less
하고
- 입력 50%하여 파일의 중간으로 이동
- 43210G 43210 행으로 이동
:43210
똑같이
그런 것들.
더 좋은 방법 : v해당 위치에서 편집을 시작하십시오 (vim에서!). 이제 vim
동일한 키 바인딩이 있습니다.
답변
먼저 파일을 이처럼 몇 개의 작은 파일로 분할했습니다
$ split --lines=50000 /path/to/large/file /path/to/output/file/prefix
그런 다음 결과 파일을 grep하십시오.