【问题标题】:How to use rex command with REST api of splunk curl as client如何将 rex 命令与 splunk curl 的 REST api 一起用作客户端
【发布时间】:2019-01-23 11:46:59
【问题描述】:

我正在尝试通过正则表达式(rex 命令)从原始数据中提取新字段。我的正则表达式在 splunk 网络搜索栏中运行良好并获得结果。但不能使用 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>

什么是命名组,为什么它在 splunk 搜索栏中运行良好

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

【问题讨论】:

    标签: rest api splunk


    【解决方案1】:

    查看您的 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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      • 2019-11-25
      • 2012-10-12
      • 2014-01-14
      • 2017-12-15
      • 2013-08-16
      相关资源
      最近更新 更多