ログファイルの特定の内容だけを表示するにはどうすればよいですか?

ログファイルの特定の内容だけを表示するにはどうすればよいですか?

大容量ログファイルを簡単に切り取る方法はありますか?つまり、ログファイルの特別な内容だけを見る方法です。例えば

  • ログファイルから最後の1000行を抽出する方法は?
  • 特殊文字列を含む行のみを抽出する方法は?
  • 特別な日付/時刻を含むログファイルを抽出するには?

私も知っていますが、tailこのコマンドは最後の10行に制限されており、速度が速すぎます。 8GBのログファイルを取得するのに時間がかかります。

答え1

ログファイルから最後の1000行を抽出する方法は?

tail -1000 file.log

特殊文字列を含む行のみを抽出する方法は?

grep special_string file.log

特別な日付/時刻を含むログファイルを抽出するには?

私がこれを理解しているかどうかはわかりません。詳しく説明してもらえますか?正確に何をすべきですか?

答え2

特殊文字列を含む行のみを抽出する方法は?

ただこれだけ言うよ。 SolarisまたはHP-UXシステムでは別々のファイルとして存在grepし、各ファイルは異なるアルゴリズムを使用します。ほとんどのLinuxディストリビューションには、これら3つの名前のそれぞれにGNU grepとシンボリックリンクしかありません。パターンをメタ文字(「.」、「*」、「?」など)と一致させる必要がなく、通常の文字列のみを一致させると、間違いなくより速く実行されます。より速く実行しても、8GBのログには処理する必要があるテキストがたくさんあります。より小さい0.5GBサイズのファイルに分割するのはどうですか?egrepfgrepfgrepfgrep

答え3

一度だけ実行するには、grepとを使用しますtail

logrotate大容量ログファイルを処理するには(from a)を使用することをお勧めしますcron。時間、サイズ、行数などに基づいてログを分割するように設定できます。とても便利で柔軟です。

答え4

また、logwatch重要なものをフィルタリングするために、または同様のものを検討してください。

関連情報