줄이 아닌 파일의 마지막 N 바이트를 tail/grep/awk하는 방법

줄이 아닌 파일의 마지막 N 바이트를 tail/grep/awk하는 방법

일반 텍스트 로그 파일(myapp.log)에 로깅하는 애플리케이션이 있지만 각 로그 항목 끝에 개행 문자를 쓰지 않는 것 같습니다. 명령을 실행하면 tail -n 50 myapp.log문자 그대로 수백 개의 "라인" 텍스트(로그 항목)를 받는 것과 같습니다 .

이 로그 파일은 약 1GB로 매우 크며 마지막 CR 및/또는 LF가 삽입된 지 얼마나 오래되었는지 아는 사람이 없습니다. 예를 들어, 마지막 2MB를 어떻게 확보할 수 있나요?

답변1

스위치 사용 -c(2MB = 2 * 1024 * 1024 = 2097152바이트):

tail -c 2097152 myapp.log

감사해요피터 우저제안. 일부 tail 구현에서는 마지막 킬로바이트(k) 또는 메가바이트(m)를 인쇄하는 단위를 추가할 수 있습니다. 예를 들면 다음과 같습니다.

tail -c 2m myapp.log

그러나 이는 표준이 아니며(POSIX, UNIX(SUS) 또는 Linux(LSB)에서도) 이식성이 없습니다. 또한 "Mega"/"kilo"... 및 약어(M, k...)라는 용어는 의미가 불분명하므로(1000 대 1024) 이 구현 또는 해당 구현이 무엇을 tail의미하는지 보장할 수 없습니다 2m(지원은 가능하지만). 현재 구현의 현재 버전은 1024 변형에서 작동하는 것으로 보입니다.

관련 정보