カールコマンド出力の一部を抽出してシェル変数に割り当てるには?

カールコマンド出力の一部を抽出してシェル変数に割り当てるには?
% 合計 % 受信 % Xferd 平均速度時間時間時間現在
Dload アップロード総費用 左速度
100277100174100103464274
--:--:-- --:--:-- --:--:--
第736話ES_7PBXiq5gg67u9Vr","完了率":0.0,"状態":"inProg
res"},"meta":{"requestId":"************************","httpStatus":"200 -
「いいね!」}}

ES_で始まる強調表示された部分を抽出する必要があります。

使ってみよう

curl <...> | sed '"progressId"\:"(ES_[A-Za-z0-9]{15})'

ただし、出力全体を環境変数に保存します。

ベストアンサー1

jsonを解析するには、json解析ツールを使用することをお勧めします。jq人気なのです。

set -o pipefail # if supported by your shell
var=$(curl -s "$url" | jq -r .result.progressId) || exit

または:

json=$(curl -s "$url") || exit
var=$(printf '%s\n' "$json" | jq -r .result.progressId) || exit

(これにより、後でそのjsonデータからより多くの情報を抽出できます。)

おすすめ記事