アクセスログをチャンクで効率的にソートする方法

アクセスログをチャンクで効率的にソートする方法

アクセスログはおおよそ時間でソートされますが、uniq -c接続を時間()で集計するにはさらにソートする必要があります。大規模アクセスログの場合、ソートは印刷前にファイル全体をバッファリングしてソートするため、非常に非効率的です。

一度に与えられた行数だけをソートしてブロックを印刷するソートオプションまたはソートバージョンを知っていますか?

「ストリームソート」、「ブロックソート」、「近似ソート」というキーワードを検索しました。ドキュメント全体を読んだが、役に立たない。バッファサイズ(-S)の設定はこれには影響しません。

ベストアンサー1

tail -f access_log | awk -v 'cmd=sort --OPTION-IN-QUESTION | uniq -c' '
    {print $4, $1 | cmd}
    NR % 1000 == 0 {close(cmd)}'

おすすめ記事