巨大なログファイル(14 GB以上)で何かを検索する必要があります。私はそれが最後の4GBかそこらにあるとかなり確信しています。
最初のX GBをスキップしてスピードアップする方法はありますか?
コメントの一部がそれを求めたので、私はこれを投稿しています
私が最終的に使用したのは(15 GBファイル)でした。これは非常に高速に動作し、時間を大幅に節約できました。
tail -f -c 14G file | grep something
また、同じファイルで非常に初歩的なベンチマークを行いました。私がテストした:
grep xxxファイル
//ずっとかかった(> 5分)dd if = file bs = 1 skip = 14G | grep xxx
// 1秒未満の非常に速いテール-c 14g | grep xxx
//かなり高速<2秒
tail
は少し短いだけです。
NB:使用されるサフィックスg
とG
はコマンドごとに異なります(Ubuntu 15.10)
これはタイトルの質問には答えませんが、やりたいことを実行します。 tacを使用してファイルを元に戻し、次にgrepを使用して文字列を検索します。文字列がファイル内で1回または既知の回数だけ出現する場合は、既知の出現回数が見つかるまで実行します。そうすれば、ファイルのどこにあるかについての想定が正しくない場合でも、ファイルが見つかります。制限したい場合は、headを使用して制限できます。 headコマンドはtacとgrepの間を行き来します。
したがって、コマンドは次のようになります。
tac < logfile | grep myString