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 textse si desidera analizzare nella shell senza utilizzare strumenti esterni come jshon.
jshonper la prima volta, ho seguito il tuo link. Dopo averlo letto, posso solo dire che sono rimasto molto contento di averlo sentito e installato jqper 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.