我有一些如下所示的实时数据包存储在一个文件log.log
,我正在以tail -f
的形式读取log.log
文件并对其进行分析。但是所有的行都是随机的,没有固定的值,比如随机ip,data::blocks
中的随机值,每个data::都是一个列值。e、 g在a log.log
Ohter type of lines...
[TCP]: incomeing data: 91 bytes, data=connect data::10.109.0.200data::10.109.0.86data::wandata::p4data::1400data::800data::end
[TCP]: incomeing data: 91 bytes, data=connect data::10.109.0.201data::10.109.8.86data::landata::p4data::1400data::700data::end
[TCP]: incomeing data: 91 bytes, data=connect data::10.109.0.200data::10.109.58.86data::3gdata::p4data::400data::800data::end
something.. else...
现在,我如何解析这条线呢?其中,它可以忽略任何内容,只在匹配时解析:
^{pr2}$运行:
$ tail -f /var/tmp/log.log | python -u /var/tmp/myparse.py
在myparse.py公司名称:
import sys, time, os, subprocess
import re
def p(command):
subprocess.Popen(command, shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
while True:
line = sys.stdin.readline()
if line:
if "command:start" in line:
print "OK - working"
p("/var/tmp/single_thread_process.sh")
if "connect data::" in line:
..
else:
# ^(?:\+|00)(\d+)$ Parse the 0032, 32, +32
#match = re.search(r'^(?:\+|00)(\d+)$', line)
#if match:
#print "OK"
### NOT working ###
match = re.search(r'^connect data::*data::*data::*data::*data::*data::*data::end$', line)
if match:
print "OK"
尝试使用:
行锚
^
的开头是阻止匹配的第一件事。在而且
*
在regex中不是通配符,它是一个表示0次或更多次的量词。您可以使用[^:]+
来表示“除冒号之外的任何字符”。在regex101 demo
相关问题 更多 >
编程相关推荐