Tenho abaixo a resposta Json para o método POST no bash e gostaria de capturar o valor depoisidentificação de sessão":"e atribuí-lo à variávelidentificação de sessão.
{"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":"criado","registro":{"chave":"161.35.123.111"}}],"sessionId":"b7305d77-20f1-4d57-9eb1-9b9fb4f9552d"}
#chamada de API
request_post="$(curl --insecure --request POST "endpoint_URL")"
eco $request_post
Preciso de ajuda para concluir a etapa abaixo
#Cortar sessionId da resposta
ID_da_sessão=
Responder1
Embora a análise de estruturas json deva ser feita por um analisador json, casos triviais como esse podem ser feitos com uma ferramenta trivial e você pode canalizar a resposta sed
, por exemplo:
sed 's/.*"sessionId":"\([^"]*\).*/\1/'
\______________/ \___/ \/
A B C
A corresponde a tudo, inclusive "sessionId":"
, B corresponde a todos os não- seguintes "
, que é o sessionId real, e C corresponde ao resto da linha. B está incluído em \(\)
, portanto pode ser referido na substituição como \1
. Portanto, toda a linha é substituída apenas pelo sessionId.
Claro, se a saída puder ser dividida em várias linhas ou usar outras variações permitidas pelo formato json, o script ficará mais complicado.