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

Parsing values between double quotes values from json list downloaded via curl

我有一个在线 JSON 文件。每次我尝试下载它。但我需要解析这个 JSON 并在双引号之间获取在线 ip。通常我可以用 jq 解析它,比如 .sample[].echo 等,但我的列表比 example1,2..300 大,其中存储了超过 300 个块数据。我需要解析并仅在双引号内获取并获取所有 ip。

顺便说一句:我在 stackover 上看到了很多问题,但是 none 其中与过滤这种输入有关

curl -L "https://sample.data.com/ip.json" -o 'ip.json' | *need to parsing method here*

这是我的 JSON 文件:

{
  "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"
    ]
  },
  .
  .
  .
  .
  .
}

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

.. | 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"

我猜你不想让 IP 保持不变,这可以用 -r 输出标志

来处理
$ 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