我正在尝试使用“ tail”插件来匹配文件中的特定值。我在另一篇文章中看到该插件仅支持POSIX ERE语法。下面的示例文件:
[18/Jul/2018:23:54:26.388 +0000] SEARCH RESULT instanceName="asdf" threadID=10 conn=1 op=123 msgID=124 requesterIP="asdf" requesterDN="cn=Directory Manager,cn=Root DNs,cn=config" base="cn=System Information,cn=monitor" scope=0 filter="(objectClass=*)" attrs="instanceRoot" resultCode=0 resultCodeName="Success" qtime=1 etime=0.494 preAuthZUsedPrivileges="bypass-acl" entriesReturned=1
[18/Jul/2018:23:54:26.391 +0000] SEARCH RESULT instanceName="asdf" threadID=8 conn=1 op=124 msgID=125 requesterIP="asdf" requesterDN="cn=Directory Manager,cn=Root DNs,cn=config" base="cn=Servers,cn=admin data" scope=0 filter="(objectClass=*)" attrs="1.1" resultCode=32 resultCodeName="No Such Entry" message="Entry cn=Servers,cn=admin data specified as the search base DN does not exist" matchedDN="cn=admin data" qtime=0 etime=0.059 entriesReturned=0
我想找到每个SEARCH操作的etime编号。我想出的正则表达式似乎可以在在线正则表达式引擎上运行,但是似乎不能与插件一起使用,并且无法编译:
/(?<=\bSEARCH.*etime=)[+-]?([0-9]*[.])?[0-9]+/g
Compiling the regular expression "(?<=\bSEARCH.*etime=)[+-]?([0-9]*[.])?[0-9]+" failed.
我在这里想念什么?
答案 0 :(得分:0)
为什么不使用这样的东西?
/ SEARCH .* etime=([0-9.]+) entriesReturned=[0-9]+$/
当然,这假设etime=
和entriesReturned=
总是排在最后。如果这个假设是错误的,则根据实际的日志输入语法,可能无法使用POSIX扩展正则表达式可靠地提取您要查找的值。
请注意,只有特定的DSType
规范才实际使用匹配值。 GaugeInc
不会,但是诸如CounterSet
或GaugeSet
之类的其他语言会