【问题标题】:using yq to get keys and a specific value without knowing key names使用 yq 在不知道键名的情况下获取键和特定值
【发布时间】:2021-07-02 20:57:27
【问题描述】:

我有一个这样的 .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 做到这一点?

【问题讨论】:

  • 您的输入是无效的 YAML,而您的输出虽然是有效的 YAML,但却是一个多行标量。您既不能使用 yq 处理无效的 YAML,也不能指示它在多行标量中放置换行符的位置。

标签: yaml yq


【解决方案1】:

您可以使用 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

【讨论】:

    【解决方案2】:

    使用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 版本)

    【讨论】:

      猜你喜欢
      • 2015-01-23
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多