Capturar una cadena de la respuesta JSON

Capturar una cadena de la respuesta JSON

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.

información relacionada