私は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をエコーする
以下の手順を完了するにはサポートが必要です
#レスポンスからセッションIDを切り取る
セッションID=
答え1
json 構造の解析は json パーサーによって実行される必要がありますが、このような簡単なケースは簡単なツールで実行でき、答えをパイプすることもできますsed
。次に例を示します。
sed 's/.*"sessionId":"\([^"]*\).*/\1/'
\______________/ \___/ \/
A B C
A は までのすべてに一致し、 も含みます"sessionId":"
。B は 以外の後続のすべて"
(実際の sessionId)に一致し、 C は行の残りの部分に一致します。B は に含まれているため\(\)
、置換では として参照できます\1
。したがって、行全体が sessionId のみに置き換えられます。
もちろん、出力が複数の行に分割される場合や、json 形式で許可されている他のバリエーションを使用する場合は、スクリプトはより複雑になります。