如何修剪speedtest-cli的结果只输出下载速度?
我想在indicator-sysmonitor中定期显示我的速度测试下载速度结果。
如果跑步,speedtest-cli会略微调整输出
$ speedtest-cli --simple Ping: 50.808 ms Download: 10.87 Mbit/s Upload: 4.47 Mbit/s
有没有什么方法可以将输出调整得更多,直到下载速度数字?
由于speedtest-cli
是一个python程序和库,因此很容易制作一个只执行下载测试并打印输出的最小替代程序。
打开一个编辑器,保存为dl-speedtest.py
import speedtest s = speedtest.Speedtest() s.get_config() s.get_best_server() speed_bps = s.download() speed_mbps = round(speed_bps / 1000 / 1000, 1) print(speed_mbps)
用python dl-speedtest.py
运行
这给出了bps的结果,作为浮点数 Mbps四舍五入到请求的一个小数
这个工作的speedtest-cli的最小版本是1.0.0我想,你可能需要使用pip install speedtest-cli --upgrade
来升级。
这是awk
的工作:
speedtest-cli --simple | awk 'NR==2{print$2}' # just the numeral speedtest-cli --simple | awk 'NR==2{print$2" "$3}' # numeral and unit
说明
-
NR==2
– 走第2
行 -
{print$2}
– 打印第二列(默认为空格分隔) -
{print$2" "$3}
– 打印第二列,后跟空格和第三列
有了它,它有点复杂:
speedtest-cli --simple | sed '/D/!d;s/.* \(.*\) .*/\1/' # just the numeral speedtest-cli --simple | sed '/D/!d;s/[^ ]* \(.*\)/\1/' # numeral and unit
说明
-
/D/!d
– 搜索包含D
行而不是(!
)d
elete,但是每隔一行 -
s/A/B/
– 与B
s
伙伴A
-
.*
– 拿走一切 -
[^ ]*
– 把一切不是(^
)的空间 -
␣
(空格字符) – 文字空间 -
\(…\)
– 将所有内容保存在一起并将其保存为一组 -
\1
– 获取第1组的内容
然后是:
speedtest-cli --simple | grep Download | awk '{print $2}'
就像甜点的第一选择,虽然没有线选择器。
这也有效:
speedtest-cli --simple | grep -E "Download:\s*" | sed -r 's/Download:\s*//'
你可以试试这个:
speedtest-cli --simple | grep "Download: " | sed "s/Download: //g"