ログファイルから最後の100行のログを取得する必要があります。 sedコマンドを試しました
sed -n -e '100,$p' logfilename
このコマンドを変更して last 100行を明確に取得する方法を教えてください。
Sedのドキュメントにある最後の100行を表示するsedスクリプトを見てください( https://www.gnu.org/software/sed/manual/sed.html#tail )。
$ cat sed.cmd
1! {; H; g; }
1,100 !s/[^\n]*\n//
$p
$ sed -nf sed.cmd logfilename
私にとっては、あなたのスクリプトよりもずっと難しいのです。
tail -n 100 logfilename
はるかに簡単です。そしてそれは非常に効率的です、それが必要でなければそれはすべてのファイルを読みません。 tail ./huge-file
のstraceレポートで私の答えを見てください: https://unix.stackexchange.com/questions/102905/does-tail-read-the-whole-file/102910#102910
"tail"はファイルの最後の部分を表示するコマンドです。適切なスイッチを使用すると、より具体的な出力を得ることができます。私にとって最もよく使われるスイッチは-nと-fです
_概要_
テール[-F | -f | -r] [-q] [-b number | -c番号-n番号] [ファイル...]
ここに
-n number:位置はnumber行です。
-f:-fオプションを指定すると、ファイルの終わりに達したときにtailが停止せず、入力に追加データが追加されるのを待ちます。標準入力がパイプの場合、-fオプションは無視されますが、FIFOの場合は無視されません。
最後の100行のログを取得します
To get last static 100 lines
tail -n 100 <file path>
To get real time last 100 lines
tail -f -n 100 <file path>
len=`cat filename | wc -l`
len=$(( $len + 1 ))
l=$(( $len - 99 ))
sed -n "${l},${len}p" filename
最初の行はファイルの長さ(合計行)を取り、その後合計行で+1します。その後、100レコードを取得する必要があります。
これがあなたのお役に立てば幸いです。
私はこれがとても古いことを知っています、しかし、だれでもそれが助けるかもしれません。
less +F my_log_file.log
これは基本的なことですが、より少ないもので、より強力なことを実行できます。ログを見始めたら、検索ができるようになり、行番号に移動し、パターンを検索することができます。さらに大きなファイルの場合はさらに高速になります。
丸太のためのそのようなvim [全く私の意見]
元のlessのドキュメント: https://linux.die.net/man/1/less
以下のチートシート: https://Gist.github.com/glnds/8862214