我需要在目录中递归删除具有空值的 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:
---
但是,命令运行没有错误,但没有任何结果。
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
)命令是默认命令,并且可以省略。