这是我到目前为止:
[my1@graf home]$curl -# -o f1.flv 'http://osr.com/f1.flv' | grep -o '*[0-9]*'
####################################################################### 100.0%
我希望使用grep并仅从CURL输出的进度条中提取百分比.
我认为我的正则表达式是不正确的,我也不确定这个grep是否会影响持续更新的百分比?
我想要做的是基本上只获得CURL给我作为输出的百分比数字,没有别的.
感谢您的任何帮助.
解决方法:
你无法通过grep获得这样的进度信息;它没有意义.
curl将进度条写入stderr,因此在grep之前你必须重定向到stdout:
$curl – #-o f1.flv’http://osr.com/f1.flv’2>& 1 | grep 1 |结果较少:
^M 0.0
%^M######################################################################## 100.
0%^M######################################################################## 100
.0%^M######################################################################## 10
0.0%
您是否期望在其他地方重定向的连续数字流?或者您希望在一个点上获取数字?
如果它是前者,那么这种半成品就可以在一个小文件上运行:
$curl -# -o f1.flv 'http://osr.com/f1.flv' 2>&1 | sed 's/#//g' -
100.0% 0.0%
但它对大文件没用.在下载完成之前,输出不会打印,可能是因为curl似乎正在向终端发送^ H.可能有一种更好的方法来发现它,但我不会屏住呼吸.
$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%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
标签:linux,shell,grep,curl,command-line
来源: https://codeday.me/bug/20190724/1519942.html