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

时间:2017-03-06 20:41:16

标签: json recursion key jq tree-traversal

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

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

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

1 个答案:

答案 0 :(得分:4)

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