2

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

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

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

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

4

1 回答 1

3

houseThing您可以在as下使用 select 语句

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

或递归查找

yq e '.. | select(has("thingType")) | select(.thingType == "door")' yaml
于 2021-06-24T18:14:02.897 回答