从 JSON 响应中捕获字符串

从 JSON 响应中捕获字符串

我有以下 Bash 中 POST 方法的 Json 响应,并希望在之后捕获值会话ID”:”并将其分配给变量会话 ID

{"changeId":"79911476-53a4-46e1-8ffd-422436b51ad1","changeType":"已创建","记录":{"key":"159.65.198.219"}},{"changeId":"bd52dcbd-a5ab-4557-b2b8-88793c2d2964","changeType":"已创建","记录":{"key":"161.35.111.167"}},{"changeId":"f4f5c94e-6c06-473c-b810-b7bbd69c71ad","changeType":"已创建","记录":{"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 格式允许的其他变体,脚本就会变得更加复杂。

相关内容