速度テスト出力から複数の文字列のgrep

速度テスト出力から複数の文字列のgrep

私はそれを使用しています速度テストBASHスクリプトのCLIを実行し、1行だけを使用して出力を取得しようとしています(可能な場合)。

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)   

待ち時間、ダウンロード速度、アップロード速度、ジッタを取得したいです。

Most ideal format: 
Download Speed: xx Mbps
Upload Speed: xx Mbps
Latency: xx ms
Jitter: xx ms

私の現在のテストコードは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"

ベストアンサー1

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
       }'

標準出力に出力:

ダウンロード速度:85.75Mbps
アップロード速度:5.68Mbps
遅延時間:93.85ms
ジッタ:222.66ms

おすすめ記事