Extrai o valor UUID do JSON retornado da resposta HTTP

1

Estou tentando fazer um pequeno script em Shellscript que use um serviceUuid de uma resposta e o use. Acabei de imprimir a resposta do servidor em um arquivo chamado final.txt Agora eu preciso extrair o valor depois de "serviceUuid": "

Este é o script:

uuid=$(curl   -X POST -H "ACCEPT-LANGUAGE:en"   -H "Content-Type: application/json"   -H "Accept: application/json" -d  {"username":"HereThereIsTheUsername"}  Here there is the url )

echo $uuid >> final.txt

esta é a resposta:

{"status":{"code":"STATUS_OK","message":"ServiceUUID sent successfully via..."},"body":{"data":{"userApps":{},"username":"HereTheUsername","fullName":"NameOfTheAccountPossessor","lang":"sq","blocked":false,"lastLogin":"2016-10-10T17:19:22","passwordResetUuid":"6147dc32-b72e-450a-8084-2fdb5319a931","userAccessLevel":5,"countDownSeconds":0,"serviceUuid":"7260276c-5c3f-41d3-9329-3603acecb7e5","userAttributes":{},"labelMap":{},"id":"APPUSER00000012","someLabel":"NameOfTheOrganisation"}}}

Então, alguém pode me ajudar a extrair o valor?

    
por op32 22.11.2016 / 16:12

2 respostas

2

Now i need to extract the value after "serviceUuid"

Então, se a variável $uuid contiver isso:

echo "$uuid"
{"status":{"code":"STATUS_OK","message":"ServiceUUID sent successfully via..."},"body":{"data":{"userApps":{},"username":"HereTheUsername","fullName":"NameOfTheAccountPossessor","lang":"sq","blocked":false,"lastLogin":"2016-10-10T17:19:22","passwordResetUuid":"6147dc32-b72e-450a-8084-2fdb5319a931","userAccessLevel":5,"countDownSeconds":0,"serviceUuid":"7260276c-5c3f-41d3-9329-3603acecb7e5","userAttributes":{},"labelMap":{},"id":"APPUSER00000012","someLabel":"NameOfTheOrganisation"}}}

... e você somente deseja o valor serviceUuid , eu faria isso:

echo "$uuid" | sed -nE 's/.*"serviceUuid":"(.*)","user.*//p'
7260276c-5c3f-41d3-9329-3603acecb7e5

No seu caso, seria parecido com:

echo "$uuid" | sed -nE 's/.*"serviceUuid":"(.*)","user.*//p' >> final.txt

... para anexá-lo ao arquivo final.txt

sed --version
sed (GNU sed) 4.2.2
    
por 22.11.2016 / 17:02
2

é uma ferramenta de análise JSON. Você pode fazer isso:

uuid=$(curl ...)
service_uuid=$(jq -r '.body.data.serviceUuid' <<<"$uuid")
echo "$service_uuid"
7260276c-5c3f-41d3-9329-3603acecb7e5
    
por 22.11.2016 / 21:15