¿Cómo puedo analizar la salida JSON en el shell?
Por ejemplo, Amazon Web Services proporciona una CLI para recuperar el estado de sus instancias:
$ aws ec2 describe-instances <my_instance_id>
Pero el comando devuelve una cadena JSON. La salida de ese comando se ve así:
$ aws ec2 describe-instances x12345
{
"Reservations" :
{
"OwnerId": "1345345"
"Groups": [],
"SecurityGroups": [
{
"Foo" : "yes"
"Bar" : "no
}
]
}
}
¿Hay incorporados shells que podrían usarse para analizar la salida JSON?
Por ejemplo, me gustaría capturar en una variable de shell FOO
, lo siguiente output["Reservations"]["SecurityGroups"][0]{"Foo"}
.
En caso de que ayude, estoy específicamente interesado en soluciones que puedan funcionar desde Zsh.
--output text
si desea analizar en el shell sin utilizar herramientas externas como jshon
.
jshon
por primera vez, seguí tu enlace. Después de leer eso, solo puedo decir que me fui muy contento de que, por casualidad, me enteré e instalé jq
primero. Creo que a usted también le gustaría escucharlo si aún no lo ha hecho, ya que no se molesta con todos esos interruptores de línea de comandos y puede hacer sus propias expresiones regulares, incluso le permite declarar funciones y variables si lo desea. Vea la respuesta aquí si está interesado.