Je suis novice en python et pour stackoverflow, c'est mon premier article ici.Filtrage de plusieurs modèles de texte et stockage de ceux-ci et de leurs occurrences respectives
Je travaille avec un fichier journal qui ressemble à ceci:
1 février 00:00:02 noyau pont: ARRIVÉE TCP: IN = br0 phusin = 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 DTC = 6129 FENETRE = 16384 RES = 0x00 SYN URGP = 0
Je dois rechercher tout ce qui se trouve entre les deux-points. Dans cette ligne, le motif correspondant serait INBOUND TCP, mais il existe d'autres types de motifs.
Je dois rechercher ce champ, stocker tout type unique et combien de fois ils se sont produits dans le fichier.
Je sais déjà comment ouvrir le fichier et utiliser re.compile pour l'analyser et j'ai réussi à enregistrer les résultats uniques dans un autre fichier texte. Lire la documentation J'imagine que j'ai besoin d'utiliser un dictionnaire avec une sorte de boucle afin de stocker les différents modèles et leur numéro d'occurrence.
Quelqu'un peut-il m'aider?
Merci de nous lire si loin.
#!/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)
Nous ne sommes pas ici pour résoudre votre problème, mais pour vous aider dans votre démarche. Après, nous pouvons discuter d'optimisation. Cela étant dit, permet de voir votre code et ce que vous essayez et ce que vous obtenez, par opposition à ce que vous devez obtenir. – Fallenreaper
Btw, '00' est également entre deux points. Quel regex envisagiez-vous d'utiliser? – randomir
Je suis actuellement à la maison en ce moment et je n'ai pas accès à mon code en ce moment. Demain, je serai en mesure de poster ici, devrais-je modifier mon message et l'inclure ou devrais-je le poster ici dans les commentaires? Je vous remercie. – inu86