如何解决根据子对象中键的存在返回顶级键
我有一个这样的 YAML 文件
---
apps_membership:
children:
apps_prometheus:
children:
group_1:
group_2:
apps_logstash:
children:
group_3:
group_4:
apps_alertmanager:
children:
group_1:
group_2:
我在寻找虚拟机时尝试获取组,例如我寻找 group_1 我想要获取
apps_prometheus
apps_alertmanager
我正在尝试将 kislyuk/yq 和 jq 与地图/键/包含结合使用
----- 用路径命令测试
如果我使用命令
yq -r '.apps_membership.children | paths'
我得到这个结果:
[
"apps_prometheus"
]
[
"apps_prometheus","children"
]
[
"apps_logstash"
]
[
"apps_logstash","children"
]
[
"apps_alertmanager"
]
[
"apps_alertmanager","children"
]
如果我用
更改yaml apps_alertmanager:
children:
group_1: ""
group_2: ""
我得到了想要的输出:
[
"apps_alertmanager"
]
[
"apps_alertmanager","children"
]
[
"apps_alertmanager","children","group_1"
]
[
"apps_alertmanager","group_2"
]
如何使用命令路径来获取空值?
解决方法
在 kislyuk/yq 中,您可以使用 paths
中可用的 jq
函数来过滤键名
yq -r '.apps_membership.children | paths | select(.[-1] == "group_1")[0]'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。