web-dev-qa-db-ja.com

コマンドラインでgz圧縮ファイルの最後の行を印刷する方法は?

総称名のgz圧縮ログファイルがたくさんあり、それらが反映される期間を確認する必要があります。 zcatについて知っている|ヘッドですが、これはファイルの先頭でのみ機能します。

ファイル全体を解凍せずに最後の行を取得するにはどうすればよいですか?

1
Jurudocs

ヘッドエンドではなくファイルの末尾からの行が必要な場合は、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
9
Dave Sherohman

FWIW:私は尻尾を作ることができるコマンドラインツールを開発しました(-t)またはgzipファイルの連続したテール(-T)成長するにつれて。 (利用可能な他の多くのオプション): https://github.com/circulosmeos/gztool

だからあなたの場合:$ gztool -t myfile.gz | tail -1

これらのアクションのいずれについても、gztoolはそのアクションとインターリーブされた小さな(<1%/ gzip)インデックスファイルを作成することに注意してください。 これの利点は、ファイルが再び完全に解凍されないため、そのファイルのすべての次の「末尾」または抽出で時間/ CPUがほとんど消費されないことです!

1
circulosmeos