这是我到目前为止有:
[my1@graf home]$ curl -# -o f1.flv 'http://osr.com/f1.flv' | grep -o '*[0-9]*'
####################################################################### 100.0%
我想用grep和只提取从CURL输出是进度条的百分比。
我觉得我的正则表达式是不正确的,我也不知道这grep的将采取的百分比在不断更新的影响?
我所试图做的是基本上得到卷曲只给我的百分比数,作为输出,没有别的。
感谢您的任何帮助。
你不能像通过grep的进度信息; 它没有任何意义。
curl
写入进度条到stderr,所以你要重定向到标准输出,然后才能用grep显示它:
$ curl -# -o f1.flv 'http://osr.com/f1.flv' 2>&1 | grep 1 | less
$ curl -# -o f1.flv 'http://osr.com/f1.flv' 2>&1 | grep 1 | less
的结果:
^M 0.0
%^M######################################################################## 100.
0%^M######################################################################## 100
.0%^M######################################################################## 10
0.0%
您是否希望您重定向其他地方的数字不断流? 或者你希望在一个点抢号?
如果是前者,这类的小档案半assedly作品:
$ curl -# -o f1.flv 'http://osr.com/f1.flv' 2>&1 | sed 's/#//g' -
100.0% 0.0%
但它是在一个大的文件也没用。 输出不打印,直至下载完成后,可能是因为卷曲似乎发送^ H公司的终端。 有可能是一个更好的方式来sed
,但我不认为我的呼吸。
$ curl -# -o l.tbz 'ftp://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/2009/06/2009-06-02-05-mozilla-1.9.1/firefox-3.5pre.en-US.linux-x86_64.tar.bz2' 2>&1 | sed 's/#//g' -
100.0%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
试试这个:
curl source -o dest -# 2> tmp&
grep -o ".....%" tmp | tail -n1
随着卷曲7.36.0(也应该对其他版本的工作),你可以提取下列方式百分比:
curl ... 2>&1 -# | stdbuf -oL tr '\r' '\n' | grep -o '[0-9]*\.[0-9]'
这里...
代表选项/文件名。 这种输出百分比数字的序列。
卷曲使用回车\r
在它的输出,所以你需要tr
首先将其转化为\n
因为grep
是面向行的。 您还需要修改输出缓冲区设置stdbuf
得到的百分比数字卷曲输出后立即。