У меня ниже ответ Json для метода POST в bash, и я хотел бы получить значение после sessionId": " и присвоить его переменной session_ID .
{"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 ":" created "," record ": {" key ":" 161.35.123.111 "}}], " sessionId ":" b7305d77-20f1-4d57-9eb1-9b9fb4f9552d "}
#API call
request_post =" $ (curl --insecure --request POST "endpoint_URL") "
echo $ request_post
Мне нужна помощь, чтобы выполнить шаг
] # Вырезать идентификатор сеанса из ответа
se ssion_ID =
Хотя синтаксический анализ структур json должен выполняться парсером json, тривиальные случаи, подобные этому, могут быть выполнены с помощью тривиального инструмента, и вы можете передать ответ через sed
, например:
sed 's/.*"sessionId":"\([^"]*\).*/\1/'
\______________/ \___/ \/
A B C
A соответствует всему до и включая "sessionId": "
, B соответствует всем следующим не- "
, который является фактическим sessionId, а C соответствует остальной части строки. B включен в \ (\)
, поэтому при замене на него можно ссылаться как на \ 1
. Таким образом, вся строка заменяется только идентификатором sessionId.
Конечно, если вывод можно разделить на несколько строк или использовать другие варианты, разрешенные форматом json, сценарий станет более сложным.