2017-08-11 53 views
0

给定的输入这样才输入的一部分:过滤器使用select

{ 
    "type": "collection", 
    "foo": "bar", 
    "children": [ 
    { 
     "properties": { 
     "country": "GB" 
     }, 
     "data": "..." 
    }, 
    { 
     "properties": { 
     "country": "PL" 
     }, 
     "data": "..." 
    } 
    ] 
} 

如何使用jq保留所有的JSON结构,但是过滤掉一些使用select()孩子。举例来说,如果我想与国家GB返回独生子女,我希望下面的输出:

{ 
    "type": "collection", 
    "foo": "bar", 
    "children": [ 
    { 
     "properties": { 
     "country": "GB" 
     }, 
     "data": "..." 
    } 
    ] 
} 

如果我只希望他们的孩子,这很容易与.children[] | select(.properties.country == "GB"),但不会保留JSON的其余部分。

回答

2

关键是使用|=。在目前情况下,您可以使用以下模式:

.children |= map(select(...)) 
+0

谢谢!我经常为了解jq文档而苦苦挣扎。 – cmbuckley