我從 curl 輸出中有以下 JSON,我需要檢索其主機名中的host_name(主機)數量wkn。在下面的 json 中,我們有兩個主機,wkn它們的host_name.
{
"href": "http://10.10.0.10:8080",
"Hosts": {
"cluster_name": "test",
"host_name": "testmasternode.example.test.com",
"ip": "10.10.0.10"
}
}
{
"href": "http://10.10.0.10:8080",
"Hosts": {
"cluster_name": "test",
"host_name": "testwkn01.example.test.com",
"ip": "10.10.0.11"
}
}
{
"href": "http://10.10.0.10:8080",
"Hosts": {
"cluster_name": "test",
"host_name": "testwkn02.example.test.com",
"ip": "10.10.0.12"
}
}
我嘗試了幾種方法
- 這不會給出任何輸出
curl -sH http://10.10.0.10:8080/api/v1/clusters/test/hosts?fields=Hosts/host_name,Hosts/ip | jq -r '.items | .[] | select(.Hosts.host_name == ("*wkn01.*"))'
- 這給出了一個錯誤
curl -sH http://10.10.0.10:8080/api/v1/clusters/test/hosts?fields=Hosts/host_name,Hosts/ip | jq -r '.items | .[] | select(.Hosts.host_name | match("*wkn01.*"))'
jq: error (at <stdin>:76): Regex failure: target of repeat operator is not specified
uj5u.com熱心網友回復:
使用test而不是match因為您只需要一個布爾結果。然后,要測驗是否有任何專案“wkn在他們的host_name”中,正則運算式wkn就足夠了。最后,當您“需要檢索”的數量時host_name,只需使用length(需要一個陣列,因此我也更改.[]為map)。
... | jq -r '.items | map(select(.Hosts.host_name | test("wkn"))) | length'
2
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/328577.html
上一篇:無法使用PHP訪問JSON資料
