我是新来的python和stackoverflow本身,这是我的第一篇文章。过滤多个文本模式并存储它们以及它们各自的出现
2月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)
我们不是为了解决您的问题,而是帮助您解决问题。之后,我们可以讨论优化。这就是说,让我们看看你的代码,你的尝试和你得到什么,而不是你需要得到什么。 – Fallenreaper
顺便说一下,'00'也在冒号之间。你计划使用哪种正则表达式? – randomir
我现在正在家,现在我无法访问我的代码。明天我将能够在这里发布它,我是否应该编辑我的文章并包括它或者我应该在评论中发布它?谢谢。 – inu86