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

Jq: recursively delete all keys that match a given pattern

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

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

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

删除所有与模式(比如 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)