使用yq筛选YAML中persistence为true的应用条目失败求助
解决yq筛选YAML中persistence为true的条目无结果的问题
你的命令有两个关键问题导致没有返回结果:
- 结构路径错误:使用
to_entries后,applications下的每个应用条目被转换成了包含key(应用名)和value(应用配置)的对象,persistence字段在.value层级下,而非直接的.persistence。 - 类型不匹配:YAML中的
true是布尔类型,而你的命令里用了字符串"true"进行匹配,两者类型不一致,所以筛选不到目标条目。
正确命令(推荐)
如果想要保留原YAML的键值结构(直接输出a和c的完整配置),使用with_entries更简洁:yq '.applications | with_entries(select(.value.persistence == true))' manifest.yml
基于你原命令的修正版本
如果坚持用to_entries的思路,需要调整路径并修正类型匹配,最后用from_entries还原为原结构:yq '.applications | to_entries | map(select(.value.persistence == true)) | from_entries' manifest.yml
执行结果
上述命令都会输出你期望的内容:
a: enabled: true project: ../../../aproj version: v1.0.1 persistence: true c: enabled: true project: ../../../cproj version: v1.0.1 persistence: true
内容的提问来源于stack exchange,提问作者Andres Cabrera
相关产品推荐
相关产品推荐

