プレーンテキストログファイル(myapp.log)にログを記録するアプリケーションがありますが、各ログエントリの末尾に改行文字を書き込んでいないようです。コマンドを実行すると、tail -n 50 myapp.log
文字通り何百もの「行」テキスト(ログエントリ)を受け取るのと同じです。
このログファイルは約1 GBと非常に大きく、最後のCRおよび/またはLFが挿入されているかどれほど古いかを知っていません。たとえば、最後の2MBをどのように取得できますか?
答え1
スイッチを使用する-c
(2MB = 2 * 1024 * 1024 = 2097152バイト):
tail -c 2097152 myapp.log
ありがとうピーター・ウーザー提案。一部のテール実装では、最後のキロバイト(k)またはメガバイト(m)を印刷する単位を追加できます。たとえば、次のようになります。
tail -c 2m myapp.log
ただし、これは標準ではなく(POSIX、UNIX(SUS)、またはLinux(LSB)でも)移植性はありません。また、「Mega」/「kilo」...と略語(M、k ...)という用語は意味が不明であるため(1000対1024)、この実装またはその実装が何を意味するのかを保証することはtail
できません2m
(サポートは可能ですが)。現在の実装の現在のバージョンは1024バリアントで動作しているようです。