2017-08-11 52 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