Jq:递归删除与给定模式匹配的所有键

Posted

技术标签:

【中文标题】Jq:递归删除与给定模式匹配的所有键【英文标题】:Jq: recursively delete all keys that match a given pattern 【发布时间】:2017-07-26 21:13:42 【问题描述】:

如何递归删除与给定模式匹配的所有键?

我有以下 jq 配置,但它似乎不起作用:

walk( if (type == "object" and (.[] | test('.*'))) then del(.) else . end)

【问题讨论】:

【参考方案1】:

删除所有匹配模式(比如 PATTERN)的键的稳健方法(相对于不同的 jq 版本)是使用成语:

with_entries(select( .key | test(PATTERN) | not))

将其插入walk/1 会产生:

walk(if type == "object" then with_entries(select(.key | test(PATTERN) | not)) else . end)

【讨论】:

以上是关于Jq:递归删除与给定模式匹配的所有键的主要内容,如果未能解决你的问题,请参考以下文章