2017-08-11 4 views
0

comme cette entrée Vu:filtre seulement une partie de l'entrée à l'aide de sélection

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

Comment puis-je utiliser jq de conserver toute la structure JSON, mais filtrer quelques-uns des enfants qui utilisent select(). Par exemple, si je voulais retourner seuls les enfants avec le pays GB, je me attends à la sortie suivante:

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

Si je veux que les enfants, cela est facile avec .children[] | select(.properties.country == "GB"), mais ne conserve pas le reste du JSON .

Répondre

2

La clé est d'utiliser |=. Dans le cas présent, vous pouvez utiliser le modèle suivant:

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

Merci! J'ai souvent du mal à comprendre la documentation de jq. – cmbuckley