首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析通过curl下载的json列表中双引号之间的值

解析通过curl下载的json列表中双引号之间的值
EN

Stack Overflow用户
提问于 2021-10-15 06:25:52
回答 1查看 42关注 0票数 0

我有一个在线JSON文件。每次我想下载它的时候。但是我需要解析这个JSON,并在双引号之间获取在线ip。通常,我可以使用jq来解析它,比如.sample[]、.echo等,但是我的列表比Example1、2、.. 300更大,其中存储了300多个块数据。我只需要解析并获得双引号内的所有ip。

顺便说一句:我看到许多关于堆叠的问题,但没有一个与过滤这种输入有关

代码语言:javascript
复制
curl -L "https://sample.data.com/ip.json" -o 'ip.json' | *need to parsing method here*

这是我的JSON文件:

代码语言:javascript
复制
{
  "sample1": {
    "echo": [
      "255.254.253.0/32"
    ],
    "delta": [
      "199.231.211.0/32"
    ]
  },
    "sample2": {
    "beta": [
      "250.123.124.0/32"
    ],
    "pre": [
      "122.156.243.0/32"
    ]
  },
  .
  .
  .
  .
  .
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-15 06:38:15

如果您想提取所有看起来像IP的字符串,那么您仍然可以使用jq。如果我们将上面的示例JSON“修复”为实际的JSON,然后运行以下jq程序:

代码语言:javascript
复制
.. | strings | match("\\d+\\.\\d+\\.\\d+\\.\\d+(?:/\\d+)?").string

它将输出以下内容:

代码语言:javascript
复制
"255.254.253.0/32"
"199.231.211.0/32"
"250.123.124.0/32"
"122.156.243.0/32"

我猜您不想让IP保持查询状态,这可以通过-r输出标志来处理

代码语言:javascript
复制
$ curl ... | jq -r '.. | strings | match("\\d+\\.\\d+\\.\\d+\\.\\d+(?:/\\d+)?").string'
255.254.253.0/32
199.231.211.0/32
250.123.124.0/32
122.156.243.0/32
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69580672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档