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

如何提取curl命令的部分输出并将其分配给shell变量 - 第2部分?
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 188 100 188 0 0 180 0 0:00:01 0:00:01 --:--:--
180{"result":{"fileId":"3a29ca7a-813a-4b3b-9b9c-
6f9251d2171d","percentComplete":100.0,"status":"complete"},"meta":{"requestId":"*************************************************************************","httpStatus":"200 - OK"}}

再次 - 我需要提取“fileId”后面突出显示的部分:

我尝试使用以下内容 -

VAR2="$(curl <...> | sed -E -n 's/.*fileId":"([^"]+).+/\2/p')"

但是当我运行 echo $VAR2 时我没有得到任何输出

ps 理想情况下,我希望仅在百分比完成:100.0 时发生这种情况(但这不是优先事项,提取 fileId 是目前的优先事项)

答案1

这应该有效:

VAR2="$(curl<..> | sed -E -n 's/.*fileId":"([^"]+).+/\1/p')"

您尝试的问题是您在命令\2中使用了sed,但您只有一个正则表达式组。我认为你应该看看sed 信息页了解如何sed运作。

相关内容