Shell-Script

如何提取 curl 命令的部分輸出並將其分配給 shell 變數 - 第 2 部分?

  • May 15, 2020
% 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 理想情況下,我希望僅在 percentComplete:100.0 時發生這種情況(但這不是優先級,提取 fileId 是目前的優先級)

這應該有效:

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

您嘗試的問題是您\2sed命令中使用了,但您只有一個正則表達式組。我認為您應該查看sed 資訊頁面以了解其sed工作原理。

引用自:https://unix.stackexchange.com/questions/586843