我對 bash 中的 POST 方法有以下 Json 響應,並希望在之後捕獲值會話 ID":"並將其分配給變數會話ID。
{“changeId”:“79911476-53a4-46e1-8ffd-422436b51ad1”,“changeType”:“已建立”,“記錄”:{“key”:“159.65.198.219”}},{“changeIdId”:“bd522 - a5ab-4557-b2b8-88793c2d2964","changeType":"已建立","record":{"key":"161.35.111.167"}},{"changeId":"f4f5c94e-6c06-473c -b810-b7bbd69c71ad" ,"changeType":"已建立","record":{"key":"161.35.123.111"}}],“會話ID”:“b7305d77-20f1-4d57-9eb1-9b9fb4f9552d”}
#API呼叫
request_post="$(curl --insecure --request POST "endpoint_URL")"
回顯 $request_post
我需要幫助才能完成以下步驟
#從回應中截取sessionId
會話ID=
答案1
雖然解析 json 結構應該由 json 解析器完成,但像這樣的簡單情況可以使用簡單的工具來完成,並且您可以透過管道傳遞答案sed
,例如:
sed 's/.*"sessionId":"\([^"]*\).*/\1/'
\______________/ \___/ \/
A B C
A 符合 之前的所有內容(包括 )"sessionId":"
,B 符合所有後續的非"
,即實際的 sessionId,C 符合該行的其餘部分。 B 包含在其中\(\)
,因此可以在替換中稱為\1
。因此整行僅被 sessionId 取代。
當然,如果輸出可以分為幾行或使用 json 格式允許的其他變體,則腳本將變得更加複雜。