微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 yq mikefarah/yqkislyuk/yq

如何解决如何使用 yq mikefarah/yqkislyuk/yq

我需要使用 YQ
从 YAML 中删除空地图 有时这张地图可能有值,有时这会显示为空。

我的 YAML 代码如下所示:

apiVersion: route.openshift.io/v1
kind: Route
Metadata:
  annotations: {}
  creationTimestamp: "2021-03-24T13:16:10Z"

我需要删除 annotations: {}

我想要的输出

apiVersion: route.openshift.io/v1
kind: Route
Metadata:
  creationTimestamp: "2021-03-24T13:16:10Z"

有人可以帮我吗?

解决方法

当长度为 0 时,您可以删除 annotations 映射。使用 mikefarah/yq,可以如下完成(在 yq 4.9.6 版上验证)

yq e 'del(.metadata.annotations | select(length==0))' yaml
,

mikefarah/yq

对于通用方法,您可以使用命令

yq e 'del(.. | select(tag == "!!map" and length == 0))'

删除输入中的所有空对象。

如果您想对空数组执行相同操作,请将 !!map 更改为 !!seq


kislyuk/yq

移除空对象:yq -y 'del(.. | select(objects and length == 0))'

移除空数组:yq -y 'del(.. | select(arrays and length == 0))'

删除空对象、数组和字符串:yq -y 'del(.. | select(length == 0))'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。