私はpythonとstackoverflow自体に新しいです、それはここに私の最初の投稿です。複数のテキストパターンをフィルタリングし、それらとそのそれぞれの出現を格納する
2月1日午後12時00分02秒ブリッジカーネル: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
私はコロンの間のすべてを検索する必要があります。この行では、一致したパターンは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
Btw、 '00'もコロンの間です。どの正規表現を使用する予定ですか? – randomir
私は現在現在家にいますが、私はこの時点で自分のコードにアクセスできません。明日私はここにそれを投稿することができます、私は私の投稿を編集し、それを含めるか、私はここにコメントに投稿すべきですか?ありがとうございました。 – inu86