解析通过 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
我有一个在线 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