如何修剪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"