【发布时间】:2020-02-05 15:55:20
【问题描述】:
假设input.json 是:
{
"useless": "stuff",
"deleteMe": [
{
"foo": "bar",
"baz": "fizz"
}
]
}
我希望它看起来像
{
"foo": "bar",
"baz": "fizz"
}
换句话说,我想删除父级但保留子级。我看到了很多关于jq 'del()' 的信息,但这似乎在我的测试中也删除了孩子。如果我知道子元素的所有名称,我可以将它们提取到一个新对象中,但是键列表会有所不同,所以我希望采用更全局的方法。如何删除除孩子之外的所有内容?
【问题讨论】:
-
在我看来,您正在寻找
.deleteMe[](try it here)。你只需要一个数组的路径来提取它的内容。 -
@Aaron 哦...是的,我想我可以这样做,然后将其读回文件中。如果您想要代表,请随意写一个答案!
-
实际上,当使用
del()时,您将不得不回写文件,jq目前不进行就地编辑(有关该主题的讨论和进展,请参阅this issue ; 并注意需要使用临时/工作文件而不是直接写回输入文件)。老实说,那里没有太多答案,感谢代表的提议,但我会通过:)
标签: jq