从列表中获取字符串
Getting just a string from a list
如何只从“标签”获得 1 个输出?
尝试执行 -o=jsonpath='{.metadata.labels[0]}' 希望获得第一个字符串,但出现错误。
"metadata": {
"labels": {
"beta.kubernetes.io/arch": "amd64",
"beta.kubernetes.io/os": "linux",
"kubernetes.io/arch": "amd64",
"kubernetes.io/hostname": "143.110.156.190",
"kubernetes.io/os": "linux",
"node-role.kubernetes.io/controlplane": "true",
"node-role.kubernetes.io/etcd": "true",
"node-role.kubernetes.io/worker": "true"
},
metadata.labels 不是数组,所以不要认为“{.metadata.labels[0]}”会起作用。
也许您可以尝试使用 shell 获取第一个值,如下所示:
kubectl get ingress -o json | jq '.items[0].metadata.labels' | head -2 |tr -d , |cat - <(echo "}") | jq
Kubectl 使用 JSONPath 表达式过滤 JSON 对象中的特定字段并格式化输出:
kubectl get ingress -o=jsonpath='{.items[0].metadata.labels}'
参考使用以下 link:
https://kubernetes.io/docs/reference/kubectl/jsonpath/
如何只从“标签”获得 1 个输出?
尝试执行 -o=jsonpath='{.metadata.labels[0]}' 希望获得第一个字符串,但出现错误。
"metadata": {
"labels": {
"beta.kubernetes.io/arch": "amd64",
"beta.kubernetes.io/os": "linux",
"kubernetes.io/arch": "amd64",
"kubernetes.io/hostname": "143.110.156.190",
"kubernetes.io/os": "linux",
"node-role.kubernetes.io/controlplane": "true",
"node-role.kubernetes.io/etcd": "true",
"node-role.kubernetes.io/worker": "true"
},
metadata.labels 不是数组,所以不要认为“{.metadata.labels[0]}”会起作用。
也许您可以尝试使用 shell 获取第一个值,如下所示:
kubectl get ingress -o json | jq '.items[0].metadata.labels' | head -2 |tr -d , |cat - <(echo "}") | jq
Kubectl 使用 JSONPath 表达式过滤 JSON 对象中的特定字段并格式化输出:
kubectl get ingress -o=jsonpath='{.items[0].metadata.labels}'
参考使用以下 link: https://kubernetes.io/docs/reference/kubectl/jsonpath/