GNU/Linux >> Linux の 問題 >  >> Linux

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

ご覧ください。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

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


次のコマンドを使用するだけです:-

末尾 -NUMBER_OF_LINES FILE_NAME

例:tail -100 test.log

  • test.log から最後の 100 行を取得します

場合によっては、上記の出力を別のファイルに入れたい場合は、次のようにパイプできます:-

末尾 -NUMBER_OF_LINES FILE_NAME> OUTPUT_FILE_NAME

例:tail -100 test.log > output.log

  • test.log から最後の 100 行を取得し、新しいファイル output.log に保存します)

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

tail -100 <log file>   > newLogfile

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

編集:

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

tail -n 100 <log file>   > newLogfile

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

あらすじ

<ブロック引用>

テール [-F | -f | -r] [-q] [-b 番号 | -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>

Linux
  1. 複数行の文字列の最後の行に指定されたパターンが含まれているかどうかのシェルテスト?

  2. Grep And Tail -f?

  3. ファイルの行数を数えますか?

  1. sed を使用してファイルの最後の n 行を削除する方法

  2. ファイルを行単位で切り詰めるには?

  3. 時々ローテーションされる末尾のログを継続的に監視します

  1. tailコマンドを使用してログをリアルタイムで表示する方法

  2. シェルのコマンド出力から最初/最後の「n」行を削除するにはどうすればよいですか?

  3. Lsによって出力される行数?