如何提取curl命令的部分输出并将其分配给shell变量?

Vir*_*nde 1 sed shell-script regular-expression curl

% 总计 % 已接收 % Xferd 平均速度 时间 时间 时间 当前
Dload 上传总花费左速度
100 277 100 174 100 103 464 274
--:--:-- --:--:-- --:--:--第736
章
res"},"meta":{"requestId":"************************","httpStatus":"200 -
好的”}}

我需要提取以 ES_ 开头的突出显示部分

我尝试使用

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

但是它仍然将整个输出存储在环境变量中。

Sté*_*las 5

最好使用json解析工具来解析json。jq是一种流行的。

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

或者:

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

(这允许您稍后从该 json 数据中提取更多信息)。