wiw*_*nut 1 text-processing macos
我在 BASH 脚本中使用speedtest CLI,并尝试在可能的情况下仅使用一行来获取输出。
Speedtest 的典型输出:
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)
Run Code Online (Sandbox Code Playgroud)
我想获取延迟、下载速度、上传速度和抖动。
Most ideal format:
Download Speed: xx Mbps
Upload Speed: xx Mbps
Latency: xx ms
Jitter: xx ms
Run Code Online (Sandbox Code Playgroud)
我当前的测试代码使用了 2 个浪费的语句:
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"
Run Code Online (Sandbox Code Playgroud)
使用 GNU awk。我至少使用了一个空格 和(
作为字段分隔符。将其附加到您的speedtest
命令中。
| awk 'BEGIN{ FS=" +|\\(" };
/Download/{ dow=$3 " " $4 };
/Upload/ { upl=$3 " " $4 };
/Latency/ { lat=$3 " " $4 };
/jitter/ { jit=$6 " " $7 };
END{
print "Download Speed:", dow;
print "Upload Speed:", upl;
print "Latency:", lat;
print "Jitter:", jit
}'
Run Code Online (Sandbox Code Playgroud)
输出到标准输出:
下载速度:85.75 Mbps 上传速度:5.68 Mbps 延迟:93.85 毫秒 抖动:222.66 毫秒