Como posso analisar a saída JSON no shell?
Por exemplo, o Amazon Web Services fornece uma CLI para recuperar o status de suas instâncias:
$ aws ec2 describe-instances <my_instance_id>
Mas o comando retorna uma sequência JSON. A saída desse comando se parece com isso:
$ aws ec2 describe-instances x12345
{
"Reservations" :
{
"OwnerId": "1345345"
"Groups": [],
"SecurityGroups": [
{
"Foo" : "yes"
"Bar" : "no
}
]
}
}
Existe algum shells embutido que possa ser usado para analisar a saída JSON?
Por exemplo, eu gostaria de capturar em uma variável de shell FOO
o seguinte output["Reservations"]["SecurityGroups"][0]{"Foo"}
.
Caso isso ajude, estou especificamente interessado em soluções que poderiam funcionar com o Zsh.
--output text
se você deseja analisar no shell sem usar ferramentas externas como jshon
.
jshon
pela primeira vez, segui seu link. Depois de ler isso, só posso dizer que fiquei muito satisfeito por ter ouvido e instalado por acaso jq
primeiro. Eu acho que você gostaria de ouvir sobre isso também, se ainda não o fez - não se incomoda com todas essas opções de linha de comando e pode fazer suas próprias expressões regulares - até permite que você declare funções e variáveis, se desejar. Veja a resposta aqui sobre isso, se você estiver interessado.