Während der Arbeit analysiere ich häufig ** Freiformatprotokolle, die von der Entwicklungsmaschine ausgegeben und von einer anderen Person als mir eingegeben werden. Ich schreibe den Protokollanalysecode jedes Mal entsprechend, aber da ich viele Male eine Protokollanalyse durchgeführt habe, habe ich eine Vorlage und eine Technik entwickelt, die sich verbessern, also werde ich sie entwickeln.
#!/usr/bin/env python3
import sys,re
for line in sys.stdin: #Aus Standardausgabe lesen
line = line.strip() #Entfernen Sie Leerzeichen und Zeilenumbrüche am Anfang und Ende von Zeilen
print(line)
Nur das!
Der obige Code ist in Python3 geschrieben, aber Python2 ist nicht anders, außer dass Shebang und die Funktion "print" zu "print" -Anweisungen werden.
Versuchen Sie, die Zeilen mithilfe der Vorlage zu analysieren und zu aggregieren.
#!/usr/bin/env python3
import sys,re #Verarbeitet Standardeingaben und reguläre Ausdrücke
#Informationen, die Linien überschreiten, werden in den hier deklarierten Variablen gespeichert.
hoge_count = 0
#Drehen Sie die Schleife Zeile für Zeile
for line in sys.stdin:
line = line.strip()
# print(line) #Kommentieren Sie zum Debuggen aus, wenn dies nicht erforderlich ist
#Wenn Sie nach einer Zeile suchen, die mit einer bestimmten Zeichenfolge beginnt, dann nach einem regulären Ausdruck.startwith()Ist bequem
if line.startswith('hoge'):
hoge_count += 1
if line.startswith('fuga'):
#Wenn Sie in die nächste Zeile schauen möchten.readline()Anruf
next_line = sys.stdin.readline().strip()
print("next to fuga =", next_line)
#Leerzeichen und Komma-Trennzeichen.split()verwenden
if line.startswith('moge'):
moge_cols = line.split(' ')
print("moge line cols =", moge_cols)
#Verwenden Sie reguläre Ausdrücke für komplexe Übereinstimmungen
m = re.match('(.*)_muga_(.*)', line)
if m:
print("muga line left: ", m.group(1), "right:", m.group(2))
#Ausgabe des Aggregationsergebnisses
print("hoge_count =", hoge_count)
Lassen Sie uns diese Eingabe füttern.
input.txt
hoge1
hoge2
fuga
next fuga
moge 1 2 3
left_muga_right
Lauf
$ python3 analyze.py < input.txt
Sie können diese Eingabe erhalten.
output
next to fuga = next fuga
moge line cols = ['moge', '1', '2', '3']
muga line left: left right: right
hoge_count = 2
Ebenso kann äquivalenter Code in Python2 geschrieben werden.
Einführung von Codevorlagen und Techniken für die Protokollanalyse in 5 Minuten. Geschrieben in Python3, aber es ist auch in Python2 möglich.
Recommended Posts