アクセスログはおおよそ時間でソートされますが、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)}'