J'ai l'entrée JSON suivante:
{
"zk_kafka": [
{
"InstanceType": "t2.medium",
"zkMemory": "16",
"kafkaMemory": "8"
},
{
"InstanceType": "t2.small",
"zkMemory": "8",
"kafkaMemory": "4"
}
],
"es_hdfs": [
{
"InstanceType": "t2.medium",
"esMemory": "16",
"hdfsMemory": "8"
},
{
"InstanceType": "t2.small",
"esMemory": "8",
"hdfsMemory": "4"
}
]
}
Je veux d'abord sélectionner un tableau par un nom de propriété. Et puis je veux sélectionner un objet du tableau par la valeur de la propriété InstanceType
.
Exemple pour la propriété zk_kafka
et la valeur t2.medium
:
{
"InstanceType": "t2.medium",
"zkMemory": "16",
"kafkaMemory": "8"
}
Je sais comment sélectionner le tableau:
jq .zk_kafka
Mais je ne sais pas comment filtrer le tableau d'objets par une valeur de propriété.
Utilisez le filtre select
de jq
:
jq '.zk_kafka | .[] | select(.InstanceType == "t2.medium")'
Utilisez le --arg
option pour passer un argument à la requête.
jq --arg instance "t2.medium" '.zk_kafka | .[] | select(.InstanceType == $instance)'
jq
a un manuel , un tutoriel et un livre de cuisine .