如何删除空的yaml属性?

问题描述 投票:0回答:1

我需要在目录中递归删除具有空值的 markdown 文件中 yaml 的所有属性。

之前:

---
aliases:
cssclasses:
  - rss
tags: 
---

之后:

---
cssclasses:
  - rss
---

无论对象类型是什么:数组、地图等,都应该删除整行

我想和

mikefarah/yq
一起做这件事。我目前尝试,基于另一个问题运行以下命令:

yq -i 'del(.. | select(tag == "!!seq" and length == 0))' Hello.md
并用
!!seq
替换
!!map
,其中评估给出(从终端复制)

$ yq eval 'del(.. | select(tag == "!!map" and length == 0))' Hello.md
---
aliases:
cssclasses:
  - rss
tags:
---

但是,命令运行没有错误,但没有任何结果。

yaml markdown yq
1个回答
0
投票
样本中的

aliases

tags
 字段实际上保存 
null
 值。因此,通过检查上下文 
select
 是否等于 
.
(或 
null
)来
~

yq 'del(.. | select(. == null))' Hello.md # or yq 'del(.. | select(. == ~))' Hello.md # mikefarah/yq only
请注意,

kislyuk/yq

 无法识别 
~,并且自版本 4.18.1 起,mikefarah/yq 中,eval
(或 
e
)命令 
是默认命令,并且可以省略。

© www.soinside.com 2019 - 2024. All rights reserved.