我有一个JSON结果,我需要搜索一个特定值并从数组中获取。
例如,这是我的JSON,我需要在1.15
数组中搜索具有更高补丁程序版本的版本validNodeVersions
。因此,在这里我想检索值1.15.12-gke.20
,这是数组列表的最高1.15版本。有人可以帮忙吗?
基本上,我一直在寻找任何版本的最高修补程序版本。 1.15
为1.15.12-gke.20
。
gcloud container get-server-config --format json
{
"channels": [
{
"channel": "REGULAR",
"defaultVersion": "1.17.9-gke.1504",
"validVersions": [
"1.17.9-gke.6300",
"1.17.9-gke.1504"
]
},
{
"channel": "STABLE",
"defaultVersion": "1.16.13-gke.401",
"validVersions": [
"1.16.13-gke.401",
"1.15.12-gke.20"
]
}
],
"defaultClusterVersion": "1.16.13-gke.401",
"defaultImageType": "COS",
"validImageTypes": [
"UBUNTU",
"UBUNTU_CONTAINERD"
],
"validMasterVersions": [
"1.17.12-gke.500",
"1.14.10-gke.50"
],
"validNodeVersions": [
"1.17.12-gke.500",
"1.16.8-gke.12",
"1.15.12-gke.20",
"1.15.12-gke.17",
"1.15.12-gke.16",
"1.15.12-gke.13",
"1.15.12-gke.9",
"1.15.12-gke.6",
"1.15.12-gke.3",
"1.15.12-gke.2",
"1.15.11-gke.17",
"1.15.11-gke.15",
"1.15.11-gke.13",
"1.15.11-gke.12",
"1.15.11-gke.11",
"1.15.11-gke.9",
"1.15.11-gke.5",
"1.15.11-gke.3",
"1.15.11-gke.1",
"1.15.9-gke.26",
"1.15.8-gke.3",
"1.15.7-gke.23",
"1.15.4-gke.22",
"1.14.10-gke.0",
"1.14.9-gke.0"
]
}
答案 0 :(得分:0)
匹配正则表达式,排序或library(matrixStats)
m1 <- rowRanges(sampleSpace)
out <- sampleSpace[(m1[,2]- m1[,1]) <= 10,]
中的任何内容都比较棘手。 GNU jq
命令有一个很好的参数sort
,它表示版本排序,因此这是一种简单的方法,也无需将awk或排序拆分成多个字段或类似内容。
-V
jq -r '.validNodeVersions[]' file.json | grep "^1\.15" | sort -V | tail -1
1.15.12-gke.20
在这里简单地选择值,jq
按版本过滤这些值,按版本排序后,我们得到最高的值。