Pendant le travail, j'analyse souvent ** les journaux au format libre qui sont générés par la machine de développement et placés par quelqu'un d'autre que moi. J'écris le code d'analyse de journal en fonction à chaque fois, mais comme j'ai fait plusieurs fois l'analyse de journal, j'ai mis au point un modèle et une technique qui vont s'améliorer, donc je vais le développer.
#!/usr/bin/env python3
import sys,re
for line in sys.stdin: #Lire à partir de la sortie standard
line = line.strip() #Supprimer les espaces et les sauts de ligne au début et à la fin des lignes
print(line)
Seulement ça!
Le code ci-dessus est écrit en Python3, mais Python2 n'est pas différent sauf que Shebang et la fonction print
deviennent des instructions print
.
Essayez d'analyser et d'agréger les lignes à l'aide du modèle.
#!/usr/bin/env python3
import sys,re #Gère les entrées standard et les expressions régulières
#Les informations qui traversent les lignes sont stockées dans les variables déclarées ici.
hoge_count = 0
#Tournez la boucle ligne par ligne
for line in sys.stdin:
line = line.strip()
# print(line) #Pour le débogage, commentez si cela n'est pas nécessaire
#Si vous recherchez une ligne commençant par une chaîne spécifique, plutôt qu'une expression régulière.startwith()Est pratique
if line.startswith('hoge'):
hoge_count += 1
if line.startswith('fuga'):
#Si vous voulez vous tourner vers la ligne suivante.readline()Appel
next_line = sys.stdin.readline().strip()
print("next to fuga =", next_line)
#Espaces et séparateurs par virgule.split()utilisation
if line.startswith('moge'):
moge_cols = line.split(' ')
print("moge line cols =", moge_cols)
#Utiliser des expressions régulières pour les correspondances complexes
m = re.match('(.*)_muga_(.*)', line)
if m:
print("muga line left: ", m.group(1), "right:", m.group(2))
#Sortie du résultat d'agrégation
print("hoge_count =", hoge_count)
Nourrissons cette entrée.
input.txt
hoge1
hoge2
fuga
next fuga
moge 1 2 3
left_muga_right
Courir
$ python3 analyze.py < input.txt
Vous pouvez obtenir cette entrée.
output
next to fuga = next fuga
moge line cols = ['moge', '1', '2', '3']
muga line left: left right: right
hoge_count = 2
De même, un code équivalent peut être écrit en Python2.
Introduction de modèles de code et de techniques d'analyse des journaux en 5 minutes. Ecrit en Python3, mais c'est également possible en Python2.
Recommended Posts