Apache、NGINXのアクセスログからファイルごとのアクセス回数をawk で集計する

2021年4月3日

awkを使って集計します。

proc.awk

#!/bin/gawk -f

{
  sub(/?.*$/, "", $7);
  filepath[$7]++;
}
END{
  for (i in filepath) {
    print filepath[i], i;
  }
}

使い方

$ ./proc.awk access_log

解説

アクセスログをスペース区切りで見たときに7番目の項目がファイル名になるので、$7でアクセスすれば良いことがわかります。
$7 には?に続くGETクエリも入っているので、これを除去します(4行目)。
filepath 配列をファイル名ごとのカウンタとして使って数えていきます(5行目)。

出力結果はsort -nでアクセス回数順にソートできます。