使用正则表达式提取命令

时间:2011-10-29 07:07:45

标签: regex splunk

我需要提取命令,无论我们在下一行中的单词CMD后面的()中看到什么。

Oct 29 08:00:01 data2 crond[14368]: (root) CMD (sh -xv /home//ste-telnet.sh > /home/hari/logs/ste-telnet$(date +'%Y_%m_%d_%h_%m').succ 2> /home/hari/logs/ste-telnet$(date +'%Y_%m_%d_%h_%m').err)

我需要使用正则表达式,因为splunk只能理解它。

2 个答案:

答案 0 :(得分:1)

试试这个

CMD (.*)$

如果该行的最后一件事是一个命令(包含CMD的列是最后一列),这将有效。

答案 1 :(得分:0)

这有点棘手。问题是你在那里有嵌套的括号。所以,如果你使用

CMD \((.*)\)

在你的情况下你会得到一个正确的结果(实际的命令将在匹配的组号1中),但是一旦你有多个命令(或多组最外面的括号),这将失败在你的字符串中CMD之后。