jq-删除父级而不删除子级

时间:2020-02-05 15:55:20

标签: jq

假设input.json是:

{
    "useless": "stuff",
    "deleteMe": [
        {
            "foo": "bar",
            "baz": "fizz"
        }
    ]
}

我希望它看起来像

{
    "foo": "bar",
    "baz": "fizz"
}

换句话说,我想删除父项,但保留子项。我对jq 'del()'有很多了解,但这似乎在我的测试中也删除了这些子级。如果我知道所有子元素的名称,则可以将它们提取到一个新对象中,但是键的列表各不相同,因此我希望有一个更全局的方法。除了孩子,我该如何删除所有东西?

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案是将jq与sponge结合使用,例如

< input.json jq '.deleteMe[0]' | sponge input.json

还有其他一些非常合理的解决方案,部分取决于具体要求,例如

< input.json jq '.deleteMe[]' > input.tmp && mv input.tmp input.json