如何使用带有splunk curl的REST API的rex命令作为客户端

时间:2019-01-23 11:46:59

标签: rest api splunk

我正试图通过正则表达式(rex命令)从原始数据中提取新字段。我的正则表达式在splunk Web搜索栏中运行良好并得到结果。但不能将REST api curl作为客户端使用。

我想从csv数据集train.csv中提取一个字段,并将其名称命名为“数字”

curl -u admin:password -k https://localhost:8089/services/search/jobs -d search="search source=train.csv|rex field=_raw '^(?:\[^\"\\n\]*\"){2},\\w+,\\d+,\\d+,\\d+,\\d+,\\d+\\.\\d+,(?P<numbers>\[^,\]+)'| top numbers"

通过执行此命令,我得到了sid

<?xml version="1.0" encoding="UTF-8"?>

<response>
 <sid>1548238904.70</sid>

在询问结果后,我得到了错误

curl -u admin:password -k https://localhost:8089/services/search/jobs/1548238904.70/results

Error in 'rex' command: The regex ''^(?:\[^\n\]*){2}' does not extract anything. It should specify at least one named group. Format: (?&lt;name&gt;...).</msg>

名为group的组,为什么它在splunk搜索栏中能正常工作

我想要将“数字”作为列或新字段的结果

1 个答案:

答案 0 :(得分:0)

查看您的SPL本身,看来您的rex中有单引号而不是双引号,众所周知这会导致问题或没有结果。

请尝试使用以下转义双引号的方法:

$ curl -u 'username:password' -k https://dummy.splunk.url/services/search/jobs -d search="| stats count | eval foo=\"bar\" | rex field=foo \"\w(?<named>\w*)\" | table foo named"

要求返回结果时,您应该看到以下内容:

$ curl -u 'username:password' -k https://dummy.splunk.url/services/search/jobs/1548868781.39708/results

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   315  100   315    0     0    420      0 --:--:-- --:--:-- --:--:--   420<?xml version='1.0' encoding='UTF-8'?>
<results preview='0'>
<meta>
<fieldOrder>
<field>foo</field>
<field>named</field>
</fieldOrder>
</meta>
        <result offset='0'>
                <field k='foo'>
                        <value><text>bar</text></value>
                </field>
                <field k='named'>
                        <value><text>ar</text></value>
                </field>
        </result>
</results>

假设使用上述方法,您应该以如下curl命令结束:

curl -u admin:password -k https://localhost:8089/services/search/jobs -d search="search source=train.csv|rex field=_raw \"^(?:\[^\"\\n\]*\"){2},\\w+,\\d+,\\d+,\\d+,\\d+,\\d+\\.\\d+,(?P<numbers>\[^,\]+)\"| top numbers"