줄이 아닌 파일의 마지막 N 바이트를 테일 / 그리프 / awk하는 방법 각 로그 항목 끝에 줄

일반 텍스트 로그 파일 (myapp.log)에 로깅하는 응용 프로그램이 있지만 각 로그 항목 끝에 줄 바꿈 문자를 쓰지 않는 것 같습니다. 내가 명령을 실행하면 tail -n 50 myapp.log실제로 수백 줄의 텍스트 (로그 항목)를받습니다.

이 로그 파일은 대략 1GB로 매우 크며, 마지막 CR 및 / 또는 LF가 얼마나 오래 전에 삽입되었는지 알고 있습니다. 예를 들어 마지막 2MB를 어떻게 알 수 있습니까?



답변

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

tail -c 2097152 myapp.log

제안을 해준 Petr Uzel 에게 감사합니다 . 일부 테일 구현에서는 다음과 같이 마지막 킬로바이트 (k) 또는 메가 바이트 (m)를 인쇄하는 단위를 추가 할 수 있습니다.

tail -c 2m myapp.log

그러나 POSIX, UNIX (SUS) 또는 Linux (LSB) 중 어느 것도 표준이 아니며 이식성이 없습니다. 또한 용어 “Mega”/ “kilo”… 및 해당 약어 (M, k …)는 모호한 의미 (1000 대 1024)를 갖기 때문에이 구현의 tail의미가 무엇인지에 대한 보장이 많지 않습니다. 2m(현재 구현의 현재 버전은 1024 변형을 지원하는 것으로 보입니다).