$ time tail -n 1000000 hogehoge.log | head > /dev/null
real 0m35.462s
user 0m0.156s
sys 0m0.305s
$ time tail -c 10000000000 fugafuga.log | head > /dev/null
real 0m0.011s
user 0m0.000s
sys 0m0.001s大抵のログには各行にタイムスタンプがあると思いますので、-cの数を適当に調整しながら headで先頭を見るというのを何度か繰り返して、欲しい辺りを探すと良いと思います。
ちなみにheadだと-cも遅いですね。
tailコマンドって-c使うと超速い - As a Futurist…
例えばアクセスログで末尾から10000000行目辺りをみたいとかいうときに
$ tail -n 10000000 access_log | head
とかするとかなり遅いと思います。これはログの後ろの方から読み込みながら 行数を計算しているからで、10000000行分数えないとどこから表示すればいいのかわからないので なかなか結果が返ってこなくてヤキモキしてしまいます。
こんなときに、-cというオプション(ファイルの末尾からNバイト分を表示)を使うと超高速で結果が返ってきます。
1年前 | 固定リンク | 2011年 4月 25日 | 
