我正在嘗試從嵌套的 json 陣列中獲取“n”項。場景是我需要從我的云提供商處獲取新創建的云實體的 IP 地址,以便我可以使用 ansible 執行自動化任務。這是我的云提供商提供的 api 的 json 輸出示例。(出于隱私和安全原因,細節被掩蓋)
[
{
"alerts": {
"cpu": 180,
"io": 10000,
"network_in": 10,
"network_out": 10,
"transfer_quota": 80
},
"backups": {
"enabled": false,
"last_successful": null,
"schedule": {
"day": null,
"window": null
}
},
"created": "2022-04",
"group": "",
"hypervisor": "kvm",
"id": 36084613,
"image": "ubuntu20.04",
"ipv4": [
"12.34.56.78", #<--- Need to grab this public address
"192.168.x.x" #<--- and this private address
],
"ipv6": "0000::0000/128",
"label": "node-1",
"region": "us",
"specs": {
"disk": 81920,
"memory": 4096,
"transfer": 4000,
"vcpus": 2
},
"status": "running",
"tags": [],
"type": "standard",
"updated": "2022-04",
"watchdog_enabled": true
}
]
我需要獲取公共 IP 地址才能將節點添加到清單檔案中。到目前為止,我已經設法獲得以下內容:
$ cat json.json | jq -r '.[0].ipv4'
[
"12.34.56.78",
"192.168.x.x"
]
我可以通過重新輸入 jq 來獲得我想要的東西,但我覺得必須有一種更優雅的方式來做到這一點。
$ cat json.json | jq -r '.[0].ipv4' | jq -r '.[0]'
12.34.56.78
$ cat json.json | jq -r '.[0].ipv4' | jq -r '.[1]'
192.168.x.x
在 StackOverflow 上發帖的新手,所以如果有人已經在另一個執行緒上回答了這個問題,我提前道歉。我環顧四周,找不到我要找的東西。謝謝!??
uj5u.com熱心網友回復:
看來你想要:
jq -r '.[0].ipv4[]'
也許:
jq -r '.[].ipv4[]'
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/466267.html
