grepを使用していくつかのログを調べ、最新の項目だけを選択しようとしています。それは最初に一致しない行の後でgrepを停止する
tac error.log | grep 2012
tac error.log | grep "Jan.2012"
など
を行うと、それは私がすでに一致するつもりはありません知っている数百万行を通過しながら、10分間待機するように愚かですので、ログは、それらの上に大量のトラフィックの年を持っています。私は-m
最初の試合で停止するオプションがあることを知っていますが、最初に不一致で停止する方法はわかりません。私はgrep -B MAX_INT -m 1 2011
のようなことをすることができましたが、それはほとんど最適な解決策ではありません。
これをgrepで処理できますか、awkが意味をなさないでしょうか?このようawk
を使用することについてどのように
あなたはあることが喜んでいる場合それはあまりアドホックなことではありません。あなたは 'tail -n N 'を使って最新のN個の行を抽出してから、今年から何も削除しないでgrepにパイプすることができます。 –
私はawkまたは(実際には)perlを使用したいのですが、それはなぜですか? – reinierpost
なぜあなたのログファイルが非常に大きくなるのを許可していますか?あなたがログのローテーションについて知る必要があるように思えます。 – tripleee