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


164

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

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

このコマンドを変更して、最後の 100行を具体的に取得する方法を教えてください。


これはマニュアルに記載されています:gnu.org/software/sed/manual/html_node/tail.html#tail、sedが尾をエミュレートする方法。
Lars Fischer

1
tail -f -n 100 logfilename
Amitesh Bharti

回答:


302

次のようにtailコマンドを使用できます。

tail -100 <log file>   > newLogfile

これで最後の100行が表示されます newLogfile

編集:

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

tail -n 100 <log file>   > newLogfile

17
より最近の一部のバージョンでtailは構文が必要であることに注意してくださいtail -n 100 <filename>...
twalberg

14

見てください、sedのドキュメント(https://www.gnu.org/software/sed/manual/sed.html#tail)にある最後の100行を出力するsedスクリプト:

$ cat sed.cmd
1! {; H; g; }
1,100 !s/[^\n]*\n//
$p

$ sed -nf sed.cmd logfilename

私にとっては、スクリプトよりもはるかに難しいので

tail -n 100 logfilename

はるかに簡単です。そしてそれは非常に効率的です、それが必要でなければすべてのファイルを読みません。次のstraceレポートで私の回答を参照してくださいtail ./huge-filehttps : //unix.stackexchange.com/questions/102905/does-tail-read-the-whole-file/102910#102910


13

"tail"は、ファイルの最後の部分を表示するコマンドです。適切な使用可能なスイッチを使用すると、より具体的な出力を取得できます。私にとって最も使用されるスイッチは-nと-fです。

あらすじ

尾[-F | -f | -r] [-q] [-b number | -c番号| -n番号] [ファイル...]

ここに

-n 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>

3

私はこれが非常に古いことを知っていますが、それが役立つ人のために。

less +F my_log_file.log

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

ログのvimのようなものです[完全に私の意見]

オリジナルのlessのドキュメント:https : //linux.die.net/man/1/less

チートシートを減らす:https ://gist.github.com/glnds/8862214


1
len=`cat filename | wc -l`
len=$(( $len + 1 ))
l=$(( $len - 99 ))
sed -n "${l},${len}p" filename

最初の行はファイルの長さ(合計行数)をとり、その後、合計行数で+1して100レコードを一致させる必要があります。そのため、合計長さから-99になり、変数をsedコマンドに入れて、ファイルから最後の100行をフェッチします。

これがお役に立てば幸いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.