我正在Graylog中构建一个提取器来提取tac_plus系统日志数据。
我有一个日志:
<70>Oct 13 10:10:05 auth tac_plus[17354]: 2015-10-13 10:10:05 -0500#01110.10.89.1#011jmartinez#011tty132#01110.10.1.27#011stop#011task_id=146#011timezone=CDT#011service=shell#011start_time=1444747732#011priv-lvl=15#011cmd=show running-config <cr>
我想提取#011标记之间的单独陈述。我能够得到第一部分,IP:
(?<=#011)(.*?)(?=#011)
现在我想提取'jmartinez'。我在尝试:
#011.*?#011(.*)(#011)
但匹配:
jmartinez#011tty132#01110.10.1.27#011stop#011task_id=146#011timezone=CDT#011service=shell#011start_time=1444747732#011priv-lvl=15
如果我这样做:
#011.*?#011(.*)(#011tty)
它似乎有效,但我宁愿它不依赖于看到#011tty,因为它可能是另一条消息中的其他内容。
下一个怎么样?如何提取tty132,10.10.1.27,stop,task_id = 146等
任何帮助将不胜感激!
答案 0 :(得分:0)
简单的答案是使用不情愿的量词(就像你工作的IP捕获一样):
#011.*?#011(.*?)#011
但我会更进一步捕捉所有群体,例如:
#011(.*?)#011(.*?)#011(.*?)#011(.*?)#011(.*?)#011(.*?)#011