【问题标题】:How to search for a value in one long string?如何在一个长字符串中搜索一个值?
【发布时间】:2020-06-09 06:29:28
【问题描述】:

我目前正在尝试从通过cURL 命令使用GET 请求获得的长字符串中过滤值。输出如下所示:

{"errors":null,"result":{"host_id":"1632","display_name":"notshownhere","hostname":"notshownhere","dnsname":"","ip":"1.1.1.1","host_type_id":"1","checks":[{"check_id":"12851","preset_id":"1","checktype_id":"1","checktype_short_name":"ping","status":"3","status_condition":"ok","status_color":"green","status_change_time":"1589066121","result_short":"1.1.1.1 is alive","result_time":"1591683892"}

我的目标是从此输出中过滤掉host_id。这意味着,我想找到一种方法,我只能输出带有数字 1632host_id

我尝试了Select-String,但由于字符串太长,它不起作用。

【问题讨论】:

    标签: string powershell filter select-string


    【解决方案1】:

    这看起来像 JSON,最好在正确的 JSON 上使用 ConvertFrom-Json 命令。这会产生一个 PowerShell 对象,您可以在其中使用 object.'host_id' 检索值。

    解析字符串,可以进行如下操作。

    # Assuming $j contains your string
    ($j | Select-String -Pattern '(?<="host_id":")\d+(?=")').Matches.Value
    

    由于-pattern 默认采用正则表达式字符串,(?&lt;=) 包含当前位置的正向回溯。 (?=) 是一个积极的前瞻。 \d+ 是一位或多位数字。由于该命令返回一个MatchInfo 对象,因此您需要访问Value 以返回数字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-28
      • 2012-03-05
      • 2020-06-25
      • 2015-02-07
      • 2013-08-08
      • 1970-01-01
      相关资源
      最近更新 更多