カールコマンドの出力の一部を抽出してシェル変数に割り当てる方法 - パート2?

カールコマンドの出力の一部を抽出してシェル変数に割り当てる方法 - パート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正規表現グループが1つしかないことです。確認してみるといいと思います。sed 情報ページどのようsedに動作するかをご覧ください。

おすすめ記事