使用yq从嵌套YAML生成指定键值对的方法求助
使用mikefarah/yq 4.27.5提取带有description的二级节点
直接用这条命令就能得到你想要的结果:
yq eval '(.[] | to_entries) | flatten | select(.value.description) | map({(.key): .value.description}) | add' input.yaml
命令分解:
(.[] | to_entries):将每个一级节点(A1、A2)转换为键值对数组,把二级节点(B1、B2等)拆成{key: "Bx", value: {...}}的格式flatten:把所有一级节点的键值数组合并成一个统一的列表,方便后续处理select(.value.description):过滤掉value中没有description字段的项(无description时.value.description为null,会被自动排除)map({(.key): .value.description}):将每个符合条件的项转换为{Bx: "对应的description值"}的单键对象add:把所有单键对象合并成一个完整的YAML对象,就是最终需要的结构
测试后输出结果与你的需求完全一致:
B1: "B1 field" B2: "B2 field" B4: "B4 field"
内容的提问来源于stack exchange,提问作者Goddy
相关产品推荐
相关产品推荐

