我想使用jq筛选出包含特定键/值对的子数组项,而不过滤掉非数组数据。
输入:
{
"log": {
"foo": {
...
},
"entries": [
{
"request": {
"method": "OPTIONS",
"url": "http://www.foobar.com"
}
},
{
"request": {
"method": "GET",
"url": "http://www.foobar.com"
}
}
]
}
}
所需的输出:
{
"log": {
"foo": {
...
},
"entries": [
{
"request": {
"method": "GET",
"url": "http://www.foobar.com"
}
}
]
}
}
我已经尝试过了:
jq '(.log.entries[] | select(.request.method != "OPTIONS"))'
但是随后我丢失了条目上方的所有JSON数据。
答案 0 :(得分:1)
使用|=
赋值运算符就地修改子元素,例如:
.log.entries |= map(select(.request.method != "OPTIONS"))
答案 1 :(得分:1)
直接在符合您条件的对象上使用del()
操作
del(.log.entries[] | select(.request.method == "OPTIONS"))