yaml - 打印键和值,如果值满足条件
yaml - Print key and value, if value meets consitions
给定以下 yaml:
charts:
# repository with Helm charts for creation namespaces
path: ns
pathMonitoringPrometheus: prom
namespaces:
first:
description: "Description of first"
enabled: false
branch: master
bootstrapChart: bootstrap
syncAccessGroups: []
namespace:
role: k8s-role-of-first
istio: disabled
public: view
sources: []
second:
description: "Description of second"
enabled: false
branch: HEAD
bootstrapChart: bootstrap
namespace:
role: k8s-role-of-second
istio: 1-13-2
labels:
label: second
sources:
- http://url.of.second
如果 namespaces
与“已禁用”不同,我们如何获得 namespaces
及其 istio
值的列表。
我们正在尝试使用“yq”工具,但我想任何方法都可以,尽管“yq”是首选方法。
second, 1-13-2
使用 kislyuk/yq,您可以将过滤器基于 jq
。
to_entries
将对象拆分为 key-value 对 的数组
select
选择符合您条件的项目
- String interpolation 与
-r
选项相结合可以得到您想要的输出
yq -r '
.namespaces
| to_entries[]
| select(.value.namespace.istio != "disabled")
| "\(.key), \(.value.namespace.istio)"
'
second, 1-13-2
使用 mikefarah/yq 过滤器非常相似。
to_entries[]
必须拆分 to_entries | .[]
- 使用
join
和数组 替换字符串插值
yq '
.namespaces
| to_entries | .[]
| select(.value.namespace.istio != "disabled")
| [.key, .value.namespace.istio] | join(", ")
'
second, 1-13-2
这样做:
cat /path/tp/your.yaml |yq -r '.namespaces | to_entries[] | "\(.key) \(.value.namespace.istio)"'`
结果:
first disabled
second 1-13-2
给定以下 yaml:
charts:
# repository with Helm charts for creation namespaces
path: ns
pathMonitoringPrometheus: prom
namespaces:
first:
description: "Description of first"
enabled: false
branch: master
bootstrapChart: bootstrap
syncAccessGroups: []
namespace:
role: k8s-role-of-first
istio: disabled
public: view
sources: []
second:
description: "Description of second"
enabled: false
branch: HEAD
bootstrapChart: bootstrap
namespace:
role: k8s-role-of-second
istio: 1-13-2
labels:
label: second
sources:
- http://url.of.second
如果 namespaces
与“已禁用”不同,我们如何获得 namespaces
及其 istio
值的列表。
我们正在尝试使用“yq”工具,但我想任何方法都可以,尽管“yq”是首选方法。
second, 1-13-2
使用 kislyuk/yq,您可以将过滤器基于 jq
。
to_entries
将对象拆分为 key-value 对 的数组
select
选择符合您条件的项目- String interpolation 与
-r
选项相结合可以得到您想要的输出
yq -r '
.namespaces
| to_entries[]
| select(.value.namespace.istio != "disabled")
| "\(.key), \(.value.namespace.istio)"
'
second, 1-13-2
使用 mikefarah/yq 过滤器非常相似。
to_entries[]
必须拆分to_entries | .[]
- 使用
join
和数组 替换字符串插值
yq '
.namespaces
| to_entries | .[]
| select(.value.namespace.istio != "disabled")
| [.key, .value.namespace.istio] | join(", ")
'
second, 1-13-2
这样做:
cat /path/tp/your.yaml |yq -r '.namespaces | to_entries[] | "\(.key) \(.value.namespace.istio)"'`
结果:
first disabled
second 1-13-2