我需要计算给定数量的os文本模式出现在日志文件中的次数,并将其存储在字典中。在循环中递增词典:
我的问题是,我的代码是计算文件的所有条目到每种文本模式。
日志文件看起来像这样:
我做错了什么?
>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
我的代码是这样的时刻:
#!//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)
的代码不给一个错误,但所有主要有保存价值。
我读过关于defaultdict
和Counters
,但无法让他们工作。
请帮助我。
都等于1? – jacoblaw
也许你的意思是'ipos [taux] + = 1'? – lpiner