要約:ファイルから一意の行と出現回数を取得する方法はありますsort | uniq -c | sort -n
か?
詳細sort | uniq -c | sort -n
:ログ分析を行って、どのログ エントリが最も多く/最も少なく表示されるかなどの一般的な傾向を取得するときに、パイプを使用することがよくあります。非常に多くの重複があります (この場合sort | uniq -c
、時間がかかります)。
例: 私が現在直面している特定のケースは、「パラメータ化されていない」mysql bin ログからトレンドを取得して、どのクエリが最も実行されているかを調べることです。パラメータを削除するためにgrep/sedの組み合わせを通過する100万個のエントリのファイルの場合-約150の一意の行になります-約3秒のgrepとsedding、および約15秒のsorting/uniq'ingを費やします。
現在、私は < line, count > のマップを維持する単純な C++ プログラムに落ち着きました - これは 1 秒もかからずに仕事をします - しかし、既存のユーティリティが既に存在するかどうか疑問に思っていました。