Tengo la siguiente respuesta Json para el método POST en bash y me gustaría capturar el valor despuésID de sesión":"y asignarlo a la variableID de sesión.
{"changeId":"79911476-53a4-46e1-8ffd-422436b51ad1","changeType":"created","record":{"key":"159.65.198.219"}},{"changeId":"bd52dcbd- a5ab-4557-b2b8-88793c2d2964","changeType":"created","record":{"key":"161.35.111.167"}},{"changeId":"f4f5c94e-6c06-473c-b810-b7bbd69c71ad" ,"changeType":"created","record":{"key":"161.35.123.111"}}],"sessionId": "b7305d77-20f1-4d57-9eb1-9b9fb4f9552d"}
#Llamada API
request_post="$(curl --insecure --request POST "endpoint_URL")"
eco $ solicitud_post
Necesito ayuda para completar el siguiente paso
#Recortar el ID de sesión de la respuesta
ID_sesión=
Respuesta1
Si bien el análisis de las estructuras json debe realizarse mediante un analizador json, casos triviales como este se pueden realizar con una herramienta trivial y, sin embargo, puedes canalizar la respuesta sed
, por ejemplo:
sed 's/.*"sessionId":"\([^"]*\).*/\1/'
\______________/ \___/ \/
A B C
A coincide con todo hasta , incluido "sessionId":"
, B coincide con todo lo siguiente que no sea "
, que es el ID de sesión real, y C coincide con el resto de la línea. B está incluido en \(\)
, por lo que en el reemplazo se puede hacer referencia a él como \1
. Entonces, toda la línea se reemplaza solo por el ID de sesión.
Por supuesto, si la salida se puede dividir en varias líneas o utiliza otras variaciones permitidas por el formato json, el script se volverá más complicado.