微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 yaml

如何解决在 yaml

我正在尝试使用 yq 来查找 yaml 中是否存在键值对。 这是一个 yaml 示例:

houseThings:
  - houseThing:
      thingType: chair
  - houseThing:
      thingType: table
  - houseThing:
      thingType: door

如果上面的 yaml 中存在 thingType: door 的键值对,我只想要一个计算结果为 true(或任何值,或以零状态退出)的表达式。

到目前为止我能做的最好的事情是通过递归遍历所有节点并检查它们的值来查找值是否存在: yq eval '.. | select(. == "door")' my_file.yaml 返回 door。但我也想确保 thingType 是它的关键。

解决方法

您可以使用 houseThing 下的 select 语句作为

yq e '.houseThings[].houseThing | select(.thingType == "door")' yaml

或者递归查找

yq e '.. | select(has("thingType")) | select(.thingType == "door")' yaml

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。