Comment analyser la sortie JSON sur le shell?
Par exemple, Amazon Web Services fournit une CLI pour récupérer l'état de vos instances:
$ aws ec2 describe-instances <my_instance_id>
Mais la commande renvoie une chaîne JSON. La sortie de cette commande ressemble à ceci:
$ aws ec2 describe-instances x12345
{
"Reservations" :
{
"OwnerId": "1345345"
"Groups": [],
"SecurityGroups": [
{
"Foo" : "yes"
"Bar" : "no
}
]
}
}
Existe-t-il des commandes intégrées pouvant être utilisées pour analyser la sortie JSON?
Par exemple, je voudrais capturer dans une variable shell FOO
, ce qui suit output["Reservations"]["SecurityGroups"][0]{"Foo"}
.
Au cas où cela aiderait, je suis spécifiquement intéressé par les solutions qui pourraient fonctionner avec Zsh.
--output text
si vous souhaitez analyser dans le shell sans utiliser d'outils externes comme jshon
.
jshon
pour la première fois, j'ai suivi votre lien. Après avoir lu cela, je peux seulement dire que je suis parti très heureux d'avoir, par hasard, entendu parler et installé en jq
premier. Je pense que vous aimerez peut-être aussi en entendre parler si vous ne l'avez pas déjà fait - cela ne dérange pas avec tous ces commutateurs de ligne de commande et peut faire ses propres expressions régulières - cela vous permet même de déclarer des fonctions et des variables si vous le souhaitez. Voir la réponse ici à ce sujet si vous êtes intéressé.