使用mikefarah/yq删除空值列表项及空examples节点
使用Go版yq处理YAML的示例过滤需求
可以通过以下yq命令完成需求,同时保留根层级的其他节点(如示例中的project):
yq e ' .fields[] |= ( .examples |= map(select(.value | (. != "" and . != null))) | if .examples | length == 0 then del(.examples) else . end ) ' input.yaml
命令说明
.fields[] |=:遍历fields下的每个字段,对每个字段执行后续修改操作.examples |= map(select(.value | (. != "" and . != null))):筛选examples数组中value既非空字符串也非null的列表项,自动移除不符合条件的项if .examples | length == 0 then del(.examples) else . end:检查处理后的examples数组是否为空,若为空则删除整个examples节点,否则保留处理后的内容
验证效果
输入YAML:
project: people_ages fields: first_name: examples: - value: Jon comment: A very common name last_name: examples: - value: '' comment: Where is his last name? age: examples: - value: 22 comment: Just got out of college - value: comment: Not sure about his age
执行命令后输出:
project: people_ages fields: first_name: examples: - value: Jon comment: A very common name last_name: age: examples: - value: 22 comment: Just got out of college
内容的提问来源于stack exchange,提问作者Mark Miller
相关产品推荐
相关产品推荐

