Come posso analizzare l'output JSON sulla shell?
Ad esempio, Amazon Web Services fornisce una CLI per recuperare lo stato delle tue istanze:
$ aws ec2 describe-instances <my_instance_id>
Ma il comando restituisce una stringa JSON. L'output di quel comando è simile al seguente:
$ aws ec2 describe-instances x12345
{
"Reservations" :
{
"OwnerId": "1345345"
"Groups": [],
"SecurityGroups": [
{
"Foo" : "yes"
"Bar" : "no
}
]
}
}
Esistono built-in di shell che potrebbero essere utilizzati per analizzare l'output JSON?
Ad esempio, vorrei acquisire in una variabile di shell FOO
, la seguente output["Reservations"]["SecurityGroups"][0]{"Foo"}
.
Nel caso in cui aiuti, sono specificamente interessato a soluzioni che potrebbero funzionare da Zsh.
--output text
se si desidera analizzare nella shell senza utilizzare strumenti esterni come jshon
.
jshon
per la prima volta, ho seguito il tuo link. Dopo averlo letto, posso solo dire che sono rimasto molto contento di averlo sentito e installato jq
per caso. Penso che ti piacerebbe sentirne parlare anche se non l'hai già fatto - non si preoccupa di tutte quelle opzioni della riga di comando e può fare le sue regex - ti permette anche di dichiarare funzioni e variabili se lo desideri. Vedi la risposta qui a riguardo se sei interessato.