0

次の形式の access_log ファイルがあります。

65.175.123.152 - - [08/May/2007:02:17:40 +0200] "GET /favicon.ico HTTP/1.1" 404 217 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11"

ここで、UNIX シェル コマンドを使用して、毎日の総ヒット数を取得したいと考えています。

私はgrepを使用して何かをしなければならないと思います.私はunixに慣れていないので、これを行う最良の方法は何ですか?

4

1 に答える 1

1

特定の日に、次のようなことができます。

grep 08/May/2007 /var/log/httpd/access_log | wc -l

つまり、指定された日付のすべてのアクセス ログ エントリを検索し、見つかった行数をカウントします。

ログ内のすべての日について、日ごとのヒット数のレポートを作成する場合:

awk '
  {
    when=substr($4, 2, 11);
    totals[when]++
  } 
  END {
    for (i in totals) 
      print i, totals[i]
  }' /var/log/httpd/access_log | sort

結果は次のようになります。

01/Jan/2013 9
02/Jan/2013 33
03/Jan/2013 262
04/Jan/2013 35
05/Jan/2013 19
06/Jan/2013 9
07/Jan/2013 24
08/Jan/2013 68
09/Jan/2013 16
10/Jan/2013 16
于 2013-01-14T16:24:27.797 に答える