如何用yq解码YAML列表的Base64值并关联ID映射字段
进阶需求:添加ID对应的named_oid字段
假设映射ID与名称的YAML文件mapping.yaml内容如下:
oidcIssuer: 1.3.6.1.4.1.57264.1.1 githubWorkflowTrigger: 1.3.6.1.4.1.57264.1.2
解决方案
加载映射文件,遍历原始YAML元素,根据id匹配映射项添加named_oid字段,同时保留Base64解码操作,命令如下:
yq eval --slurpfile map mapping.yaml ' .[] |= ( .named_oid = ($map[] | to_entries[] | select(.value == .id).key) // null | .value |= @base64d ) ' input.yaml
说明
--slurpfile map mapping.yaml:将映射文件加载为变量$mapto_entries[]:把映射的键值对转为{key: "名称", value: "ID"}格式,方便按ID查找名称select(.value == .id).key:筛选与当前元素id匹配的映射项,取出对应名称作为named_oid的值// null:无匹配ID时,named_oid设为null(若不需要无匹配的字段,可删除此部分)- 同时保留
.value |= @base64d完成解码
执行后输出的YAML会包含named_oid字段,格式与预期一致。
内容的提问来源于stack exchange,提问作者4x0v7
相关产品推荐
相关产品推荐

