web-dev-qa-db-ja.com

最後の100行のログを取得する

ログファイルから最後の100行のログを取得する必要があります。 sedコマンドを試しました

sed -n -e '100,$p' logfilename

このコマンドを変更して last 100行を明確に取得する方法を教えてください。

100
Surabhi

次のように tail commandを使用できます。

tail -100 <log file>   > newLogfile

最後の100行がnewLogfileに表示されます。

編集:

twalberg useコマンドで言及されている最新バージョンのtail:

tail -n 100 <log file>   > newLogfile
197
Steephen

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

10
Sergei Kurenkov

"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>
5
Amitesh
len=`cat filename | wc -l`
len=$(( $len + 1 ))
l=$(( $len - 99 ))
sed -n "${l},${len}p" filename

最初の行はファイルの長さ(合計行)を取り、その後合計行で+1します。その後、100レコードを取得する必要があります。

これがあなたのお役に立てば幸いです。

1
Akshay Jangir

私はこれがとても古いことを知っています、しかし、だれでもそれが助けるかもしれません。

less +F my_log_file.log

これは基本的なことですが、より少ないもので、より強力なことを実行できます。ログを見始めたら、検索ができるようになり、行番号に移動し、パターンを検索することができます。さらに大きなファイルの場合はさらに高速になります。

丸太のためのそのようなvim [全く私の意見]

元のlessのドキュメント: https://linux.die.net/man/1/less

以下のチートシート: https://Gist.github.com/glnds/8862214

1
mdsadiq