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:递归删除与给定模式匹配的所有键的主要内容,如果未能解决你的问题,请参考以下文章

如何从redis-cli repl中删除Redis匹配模式中的所有键?

删除文件中与模式不匹配的行

获取与模式匹配的所有 JSON 键

Java如何从文件中打印与给定模式匹配的所有字符串?

使用 jq 模式匹配字段名称

c_cpp 编写一个函数来检查给定字符串是否与给定模式匹配为非连续子字符串:即,模式中的所有字符