首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于速度测试输出中的多个字符串的grep

问用于速度测试输出中的多个字符串的grep
EN

Unix & Linux用户
提问于 2021-12-03 22:53:30
回答 3查看 304关注 0票数 1

我在BASH脚本中使用速度测试 CLI,如果可能的话只使用一行来获取输出。

典型的测速输出:

代码语言:javascript
复制
Speedtest by Ookla

  Server: (censored)
     ISP: (censored)
 Latency:    93.85 ms   (222.66 ms jitter)
Download:    85.75 Mbps (data used: 134.8 MB)                               
  Upload:     5.68 Mbps (data used: 6.2 MB)   

我想抓住延迟,下载速度,上传速度,和抖动。

代码语言:javascript
复制
Most ideal format: 
Download Speed: xx Mbps
Upload Speed: xx Mbps
Latency: xx ms
Jitter: xx ms

我当前的测试代码使用了两个浪费的语句:

代码语言:javascript
复制
dl_speed=`speedtest | grep "Download: " | head -2 | tail -1 | awk {'print$2'} | cut -f1 -d:`

ul_speed=`speedtest | grep "Upload: " | head -2 | tail -1 | awk {'print$2'} | cut -f1 -d:`

echo "Download Speed: $dl_speed Mbps"
echo "Upload Speed: $ul_speed Mbps"
EN

回答 3

Unix & Linux用户

发布于 2021-12-03 23:17:46

代码语言:javascript
复制
speedtest | tr -d '(:'  | \
  awk '/Download|Upload/ {print $1 " Speed: ",$2,$3} 
       /Latency/ {print $1":",$2,$3} 
       /jitter/ {print "Jitter:",$4,$5}'

给出

代码语言:javascript
复制
Latency: 93.85 ms
Jitter: 222.66 ms
Download Speed:  85.75 Mbps
Upload Speed:  5.68 Mbps
票数 3
EN

Unix & Linux用户

发布于 2021-12-05 03:00:06

代码语言:javascript
复制
awk '{if ($1 ~ /Download/){print  "Download speed: " $2 " mbps"}else{if($1 ~ /Upload/){print "Upload Speed: "$2 " mbps"}else{if($NF ~ /jitter/  && $1 ~ /Latency/){gsub(/\(/,"",$(NF-2));print "Latency :" $2 " ms\n jitter: " $(NF-2)" ms"}}}}' filename

Latency :93.85 ms
 jitter: 222.66 ms
Download speed: 85.75 mbps
Upload Speed: 5.68 mbps
票数 0
EN

Unix & Linux用户

发布于 2021-12-04 14:46:26

在每个Unix框上使用任何shell中的任何awk,并且只在需要打印它们时使用代码中的数据名称一次,这样您就可以添加额外的prt()语句、修改它们、测试它们和/或重新排序这些或任何其他类似格式的数据,而不必对代码进行任何其他更改:

代码语言:javascript
复制
$ speedtest | awk '
    {
        gsub(/[:()]/,"")
        tag2val[tolower($1)] = $2 " " $3
        tag2val[tolower($6)] = $4 " " $5
    }
    END {
        prt("Download Speed")
        prt("Upload Speed")
        prt("Latency")
        prt("Jitter")
    }
    function prt(name,      tag) {
        tag = tolower(name)
        sub(/ .*/,"",tag)
        print name ":" OFS tag2val[tag]
    }
'
Download Speed: 85.75 Mbps
Upload Speed: 5.68 Mbps
Latency: 93.85 ms
Jitter: 222.66 ms
票数 -1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/680095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档