명령줄에서 gz 압축 파일의 마지막 줄을 인쇄하는 방법은 무엇입니까?

명령줄에서 gz 압축 파일의 마지막 줄을 인쇄하는 방법은 무엇입니까?

일반 이름을 가진 gz 압축 로그 파일이 많이 있는데, 여기에 반영되는 기간을 확인해야 합니다. 나는 zcat에 대해 알고 있습니다 | head이지만 이는 파일의 시작 부분에만 작동합니다.

전체 파일의 압축을 풀지 않고 어떻게 마지막 줄만 얻을 수 있나요?

답변1

헤드엔드가 아닌 파일의 테일엔드에서 행을 원하는 경우 tail다음 대신 사용하십시오 head.

$ zcat /var/log/syslog.2.gz | tail -1
Aug 24 07:09:02 myhost rsyslogd: [origin software="rsyslogd" swVersion="8.4.2" x-pid="796" x-info="http://www.rsyslog.com"] rsyslogd was HUPed

답변2

FWIW: 저는 gzip 파일이 커짐에 따라 꼬리( -t) 또는 연속 꼬리( )를 만들 수 있는 명령줄 도구를 개발했습니다. -T(그 외 다양한 옵션 사용 가능): https://github.com/circulosmeos/gztool

귀하의 경우에는 다음과 같습니다. $ gztool -t myfile.gz | tail -1

이러한 작업에 대해 gztool해당 작업과 함께 인터리브된 작은(<1%/gzip) 인덱스 파일이 생성됩니다.이것의 장점은 파일이 다시 완전히 압축 해제되지 않기 때문에 해당 파일에 대한 모든 다음 "테일" 또는 추출이 거의 시간/CPU를 소비하지 않는다는 것입니다!

관련 정보