web-dev-qa-db-ja.com

HTTP応答から返されたJSONからUUID値を抽出します

応答から1つのserviceUuidを取得して使用する、シェルスクリプトで小さなスクリプトを作成しようとしています。サーバーの応答をfinal.txtというファイルに出力するだけです。「serviceUuid」の後に値を抽出する必要があります。

これはスクリプトです:

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

これは応答です:

{"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"}}}

それで、誰かが私が価値を引き出すのを手伝ってくれるでしょうか?

1
op32

ここで、「serviceUuid」の後に値を抽出する必要があります

したがって、変数$uuidこれが含まれています:

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"}}}

...そしてあなたのみserviceUuid値が必要な場合、私はこれを行います:

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

あなたの場合、次のようになります。

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

...ファイルに追加するにはfinal.txt


sed --version
sed (GNU sed) 4.2.2
2
maulinglawns

jq はJSON解析ツールです。あなたはこれを行うことができます:

uuid=$(curl ...)
service_uuid=$(jq -r '.body.data.serviceUuid' <<<"$uuid")
echo "$service_uuid"
7260276c-5c3f-41d3-9329-3603acecb7e5
2
glenn jackman