CURL 进度条:如何仅使用 grep 管道和提取数字?

Abs*_*Abs 3 linux shell command-line grep curl

这是我到目前为止所拥有的:

[my1@graf home]$ curl -# -o f1.flv 'http://osr.com/f1.flv' |  grep -o '*[0-9]*'
####################################################################### 100.0%
Run Code Online (Sandbox Code Playgroud)

我希望使用 grep 并仅从 CURL 输出的进度条中提取百分比。

我认为我的正则表达式不正确,我也不确定这个 grep 是否会对持续更新的百分比生效?

我想做的基本上就是让 CURL 只给我百分比数字作为输出,而不是其他。

感谢您的任何帮助。

use*_*237 5

使用curl 7.36.0(也应该适用于其他版本),您可以通过以下方式提取百分比:

curl ... 2>&1 -# | stdbuf -oL tr '\r' '\n' | grep -o '[0-9]*\.[0-9]'
Run Code Online (Sandbox Code Playgroud)

这里...代表选项/文件名。这会输出一系列百分比数字。

Curl 在其输出中使用回车符\r,因此您需要tr首先将它们转换为\n因为grep是面向行的。您还需要修改输出缓冲区设置,以便stdbuf在curl 输出后立即获取百分比数字。