我想删除所有与正则表达式匹配的字段,同时保留所有其他字段和JSON的结构。例如,假设JSON如下所示。
{
"this": {
"foobar": {
"that": "too"
},
"baz": 3,
"foo": 1
"morefoo": {
"foosball": "hi"
}
}
}
那么所需的输出将是
{
"this": {
"baz": 3,
"morefoo": {}
}
}
可以通过明确命名字段来干净地执行此操作,如下所示:
jq 'del(.. | .foo?, .foobar?, .foosball?)'
但是我想用正则表达式来做到这一点
jq 'del(.. | .("^foo")?)' # This does not work
有什么建议吗?如果可能的话,我宁愿避免使用with_entries
,但是如果那是唯一的方法,那就这样吧。
这是一个使用以下方法的简单解决方案walk
:
walk(if type=="object"
then with_entries(select(.key | test("^foo") | not))
else . end)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句