yaml模板(可能是yq)

  • 本文关键字:yq 模板 yaml yaml yq
  • 更新时间 :
  • 英文 :


你好,目前我试图找到一个工具(我很确定yq不魔术对我来说)从一个yaml文件中删除一些内容。我的文件如下所示:

paths:
/entity/{id}:
get:
tags: a
summary: b
...

所以这是一个典型的openapi规范。我想添加一个神奇的属性,例如'env: prod',这样一些端点看起来如下:

paths:
/entity/{id}:
get:
env: prod
tags: a
summary: b
...

是否有一个解决方案来删除所有端点,其中包含env: prod?

我也可以自由地改变概念。如果有一些变换,如果有的话,我会很高兴的。

使用kislyuk/yq:

yq -y '.[][][] |= ({env: "prod"} + .)'

使用mikefarah/yq:

yq '.[][][] |= ({"env": "prod"} + .)'

生产:

paths:
/entity/{id}:
get:
env: prod
tags: a
summary: b

这将env: prod添加到每个三层深度的对象。如果您希望标准更复杂,则必须相应地调整.[][][]

yq 'del(.. | select(.env == "prod"))' file.yaml

解释:您想要删除所有将子'env'属性设置为'prod'的节点。

  • ..递归匹配所有节点
  • select(.env == "prod")选择env属性等于" product ">
  • del(.. | select(.env == "prod")删除这些节点:)

免责声明:我写了mikefarah/yq

最新更新