在不知道键名的情况下使用 yq 获取键和特定值

时间:2021-04-27 18:34:45

标签: yaml yq

我有一个这样结构的 .yml 文件

key_1:
   some_other_key
   owners: value
key_2:
   some_other_key
   owners: value
key_3:
   some_other_key
   owners: value

我正在尝试获取顶级密钥和所有者的值,因此输出就像

key_1, owners.value
key_2, owners.value
key_3, owners.value

有没有办法用 yq 做到这一点?

2 个答案:

答案 0 :(得分:0)

使用 yq(Python 版本),您可以使用 oneliner 进行转换。

yq -r 'to_entries[] | "\(.key), \(.value.owners)"'

输入

key_1:
   some_other_key: other_value
   owners: value_1
key_2:
   some_other_key: other_value
   owners: value_2
key_3:
   some_other_key: other_value
   owners: value_3

输出

key_1, value_1
key_2, value_2
key_3, value_3

这不适用于 yq(Go 版本)

答案 1 :(得分:0)

您可以使用 oneliner 进行转换。

使用 yq(Python 版本) yq -r 'to_entries[] | "\(.key), \(.value.owners)"'

使用 yq(Go 版本) yq e 'to_entries | .[] | .key + ", " + .value.owners'

输入

key_1:
   some_other_key: other_value
   owners: value_1
key_2:
   some_other_key: other_value
   owners: value_2
key_3:
   some_other_key: other_value
   owners: value_3

输出

key_1, value_1
key_2, value_2
key_3, value_3