regex comme la recherche dans un json avec jq
J'ai json et je veux obtenir l'id du sous-réseau correspondant qui correspondent à la variable de sous-réseau.
subnet="192.168.112"
json='{
"subnets": [
{
"cidr": "192.168.112.0/24",
"id": "123"
},
{
"cidr": "10.120.47.0/24",
"id": "456"
}
]
}'
Depuis regex n'est pas pris en charge avec jq. Le seul moyen que j'ai trouvé pour obtenir l'id de droite est-à-mixte grep, sed et jq comme ceci :
tabNum=$((`echo ${json} | jq ".subnets[].cidr" | grep -n "$subnet" | sed "s/^\([0-9]\+\):.*$//"` - 1))
NET_ID=`echo ${json} | jq -r ".subnets[${tabNum}].id"`
Est-il un moyen pour obtenir l'id en utilisant uniquement jq ?
Les expressions régulières sont pris en charge dans jq 1.5. Envisager d'utiliser cela.
OriginalL'auteur mguerin | 2015-07-15
Vous devez vous connecter pour publier un commentaire.
Il n'est pas complètement clair pour moi ce que votre script n', mais il semble que cela ne ressemble à une chaîne qui contient la condition sous-ensemble. Je conseille
contient
oustartswith
. Un exemple de script devrait ressembler:Puisque vous parlez de regex: la dernière version de jq, 1.5, comprend regex de soutien (merci à Jeff Mercado de souligner ce point!) et, si vous avez à traiter avec la manipulation de chaînes de problèmes fréquemment, je vous recommande de le vérifier.
OriginalL'auteur