与えられた数のテキストパターンがログファイルに何回現われたかを数え、これを辞書に格納する必要があります。ループ内のインクリメント辞書:
私の問題は、すべての種類のテキストパターンに対してファイルのすべてのエントリがカウントされているということです。
ログファイルには、次のようになります。
私が間違っているのか?
#!//usr/bin/python3
import sys
import os
import re
from collections import defaultdict
tipos={}
p= re.compile ('bridge kernel:.*:')
with open (sys.argv[1], 'r') as f:
for line in f:
match = p.search(line)
if match:
taux=(line.split(":") [3])
tipos[taux]=1
print (tipos)
コードがエラーを与えるものではありませんが、すべてのキーは保存値を持つ:
>Feb 1 00:00:02 bridge kernel: INBOUND TCP: IN=br0 PHYSIN=eth0 OUT=br0 >PHYSOUT=eth1 SRC=XXX.XXX.XXX.XXX DST=XXX.XXX.XXX.XXX LEN=40 TOS=0x00 >PREC=0x00 TTL=110 ID=12973 PROTO=TCP SPT=220 DPT=6129 WINDOW=16384 RES=0x00 >SYN URGP=0
>Feb 1 00:00:02 bridge kernel: INBOUND TCP: IN=br0 PHYSIN=eth0 OUT=br0 >PHYSOUT=eth1 SRC=XXX.XXX.XXX.XXX DST=XXX.XXX.XXX.XXX LEN=40 TOS=0x00 >PREC=0x00 TTL=113 ID=27095 PROTO=TCP SPT=220 DPT=6129 WINDOW=16384 RES=0x00 >SYN URGP=0
私のコードは、現時点ではこれです。
私はdefaultdict
とCounters
について読んだことがありますが、動作させることはできませんでした。
お願いします。
はすべて1に等しい値ですか? – jacoblaw
おそらく 'ipos [taux] + = 1'を意味するでしょうか? – lpiner