我想定期显示我的 Speedtest 下载速度结果指标-系统监视器。
如果您运行 speedtest-cli,则输出会稍微修剪一下
$ speedtest-cli --simple
Ping: 50.808 ms
Download: 10.87 Mbit/s
Upload: 4.47 Mbit/s
有没有办法进一步精简输出,直至仅显示下载速度数字?
答案1
作为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
升级。
答案2
这是一份工作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}
– 打印第二列,后面跟着一个空格,然后打印第三列
它sed
稍微复杂一些:
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
删除它们,但每隔一行s/A/B/
–s
替换A
为B
.*
– 拿走一切[^ ]*
– 取所有不是 (^
) 空格的内容␣
(空格字符)——文字空格\(…\)
- 将所有东西放入其中并将其保存为一个组\1
– 获取组 1 的内容
答案3
这也行得通:
speedtest-cli --simple | grep -E "Download:\s*" | sed -r 's/Download:\s*//'
答案4
然后还有:
speedtest-cli --simple | grep Download | awk '{print $2}'
就像甜点的第一个选项,但没有线路选择器。