如何修剪speedtest-cli的结果以仅输出下载速度?

如何修剪speedtest-cli的结果以仅输出下载速度?

我想定期显示我的 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替换AB
  • .*– 拿走一切
  • [^ ]*– 取所有不是 ( ^) 空格的内容
  • (空格字符)——文字空格
  • \(…\)- 将所有东西放入其中并将其保存为一个组
  • \1– 获取组 1 的内容

答案3

这也行得通:

speedtest-cli --simple | grep -E "Download:\s*" | sed -r 's/Download:\s*//'

答案4

然后还有:

speedtest-cli --simple | grep Download | awk '{print $2}'

就像甜点的第一个选项,但没有线路选择器。

相关内容