Extrait d'un domaine spécifique de la sortie JSON à l'aide de jq
J'ai une sortie JSON comme suit:
{
"example": {
"sub-example": [
{
"name": "123-345",
"tag" : 100
},
{
"name": "234-456",
"tag" : 100
},
{
"name": "4a7-a07a5",
"tag" : 100
}
]
}
}
Je veux extraire les valeurs des trois "nom" champs et de le stocker dans trois variables.
J'ai essayé cat json_file | jq '.["example.sub-example.name"]'
pour extraire la valeur du champ "nom", mais qui ne fonctionne pas.
Quelqu'un peut me dire comment faire pour obtenir cette aide de jq (ou une autre méthode)?
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez extraire le
name
champs, la commande que vous cherchez estjq '.example."sub-example" | .[] | .name'
. Si vous souhaitez conserver les noms dans un tableau, envelopper toute lajq
expression entre crochets.jq
? Il a très bien fonctionné sur mon système. J'utilise la version 1.5 (vous pouvez vérifier avecjq --version
)..name-of-instance
comme une expression (.name - of - instance
). Utilisez des guillemets, comme je l'ai fait dans"sub-example"
..example."sub-example" | .[] | {field1: .field1, field2: .field2}
.Dans jq 1.3, vous pouvez utiliser le filtre:
Ou de manière plus compacte:
Ces bien sûr aussi travailler avec les versions ultérieures de jq ainsi.