私のプログラムは大きなログ ファイルを読み込みます。次に、ファイルで IP と TIME (括弧内にあるもの) を検索します。
5.63.145.71 - - [2013 年 6 月 30 日:08:04:46 -0500] "HEAD / HTTP/1.1" 200 - "-" "checks.panopta.com" 5.63.145.71 - - [2013 年 6 月 30 日:08:04:49 -0500] "HEAD / HTTP/1.1" 200 - "-" "checks.panopta.com" 5.63.145.71 - - [30/Jun/2013:08:04:51 -0500] "HEAD / HTTP/1.1" 200 - "-" "checks.panopta.com"
ファイル全体を読み取り、エントリを次のように要約します。
Num 3 IP 5.63.145.1 TIME [30/Jun/2013:08:04:46 -0500] エントリ数、IP、TIME、DATE
私がこれまでに持っているもの:
import re
x = open("logssss.txt")
dic={}
for line in x:
m = re.search(r"\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b",line).group().split()
c = re.search(r"\[(.+)\]",line).group().split()
for i in range(len(m)):
try:
dic[m[i]] += 1
except:
dic[m[i]] = 1
k = dic.keys()
for i in range(len(k)):
print dic[k[i]], k[i]
上記のコードが正しく表示されるようになりました。ありがとう。
6 199.21.99.83
1 5.63.145.71
編集: c を出力に追加するのはどうですか?タイムスタンプは明らかに異なりますが、同じ行で値の1つを取得するだけで可能ですか?