Nic*_*hov 6 linux command-line grep wget
我需要下载几个文件wget并测量下载速度.
我下载了
wget -O /dev/null http://ftp.bit.nl/pub/OpenBSD/4.7/i386/floppy47.fs http://ftp.bit.nl/pub/OpenBSD/4.7/i386/floppyB47.fs
Run Code Online (Sandbox Code Playgroud)
而输出是
--2010-10-11 18:56:00-- http://ftp.bit.nl/pub/OpenBSD/4.7/i386/floppy47.fs
Resolving ftp.bit.nl... 213.136.12.213, 2001:7b8:3:37:20e:cff:fe4d:69ac
Connecting to ftp.bit.nl|213.136.12.213|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1474560 (1.4M) [text/plain]
Saving to: `/dev/null'
100%[==============================================================>] 1,474,560 481K/s in 3.0s
2010-10-11 18:56:03 (481 KB/s) - `/dev/null' saved [1474560/1474560]
--2010-10-11 18:56:03-- http://ftp.bit.nl/pub/OpenBSD/4.7/i386/floppyB47.fs
Reusing existing connection to ftp.bit.nl:80.
HTTP request sent, awaiting response... 200 OK
Length: 1474560 (1.4M) [text/plain]
Saving to: `/dev/null'
100%[==============================================================>] 1,474,560 499K/s in 2.9s
2010-10-11 18:56:06 (499 KB/s) - `/dev/null' saved [1474560/1474560]
FINISHED --2010-10-11 18:56:06--
Downloaded: 2 files, 2.8M in 5.9s (490 KB/s)
Run Code Online (Sandbox Code Playgroud)
我需要grep总下载速度,即字符串490 KB/s.我该怎么做呢?
PS可能需要考虑我们实际上只下载一个文件的情况,因此不会有最终输出 FINISHED
更新,使用 sed 的 grep 风格版本:
wget ... 2>&1 | sed -n '$,$s/.*(\(.*\)).*/\1/p'
Run Code Online (Sandbox Code Playgroud)
旧版本:
我想,下载后用文件大小除以下载时间更容易。;-)
(/usr/bin/time -p wget ... 2>&1 >/dev/null; ls -l newfile) | \
awk '
NR==1 {t=$2};
NR==4 {printf("rate=%f bytes/second\n", $5/t)}
'
Run Code Online (Sandbox Code Playgroud)
awk 的第一行将“real xx.xx”的实际经过时间存储在 variabe 中t。第二条 awk 行将文件大小( 的第 5 列ls -l)除以时间并将其输出为速率。