Я новичок в python и в самом stackoverflow, это мой первый пост здесь.
Я работаю с файлом журнала, который выглядит так:
1 февраля 00:00:02 ядро моста: ВХОД 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
Мне нужно искать все между двоеточиями. В этой строке совпавший шаблон будет INBOUND TCP, но есть и другие типы шаблонов.
Мне нужно найти это поле, сохранить все уникальные типы и сколько раз они встречались в файле.
Я уже знаю, как открыть файл и использовать re.compile для его анализа, и мне удалось сохранить уникальные результаты в другом текстовом файле.
Читая документацию, я предполагаю, что мне нужно использовать словарь с каким-то циклом, чтобы хранить различные шаблоны и их число вхождений.
Кто-нибудь может мне помочь?
Спасибо, если дочитали до этого места.
#!/usr/bin/python3
import sys
import os
import re
p= re.compile ('bridge kernel:.*:')
with open (sys.argv[1], "r") as f:
with open ('tipos.txt',"w" ) as f2:
for line in f:
if p.search(line):
f2.write(line.split(":")[3] + '\n')
os.system('sort tipos.txt|uniq > tipos2.txt')
dict={}
with open (sys.argv[1],"r") as log:
with open ('tipos2.txt','r') as f:
for l in f:
if f in log:
dict={"(f.line)", "(len(log))"}
print (dict)
00
тоже между двоеточиями. Какое регулярное выражение вы планировали использовать? - person randomir   schedule 27.07.2017get(key, default_value)
, вы можете установить значение по умолчанию0
и добавлять 1 каждый раз, когда элемент появляется - person José Garcia   schedule 27.07.2017