1

iperf3 バージョンを使用すると、ターミナルで次のようなパフォーマンス結果が得られます。

[  4] local 10.0.1.8 port 34355 connected to 10.0.1.1 port 5201
49,49,0,0,35500
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  2.19 MBytes  18.4 Mbits/sec    0   69.3 KBytes       
CPU Utilization: local/sender 2.8% (0.7%u/3.3%s), remote/receiver 1.4% (0.6%u/0.9%s)

後で bash スクリプトで使用する特定の値のみを使用したいと考えています。私が欲しいのは次のようなものです:

35500,18.4,2.8

私の知る限り、grepを使用して帯域幅のみを出力できます:

./src/iperf3 -c 10.0.1.1 -d -t 1 -V | grep -Po '[0-9.]*(?= Mbits/sec)'

しかし、grepを使用して「35500,18.4,2.8」を取得することは可能ですか?また、その方法は?

回答ありがとうございます

4

1 に答える 1

1

grep with P(Perl-regex) option allows you to include multiple regexes,

$ grep -Po '(?<=,)[0-9]+$|[0-9.]*(?= Mbits/sec)|(?<=local\/sender )[^%]*' file | paste -d, - - -
35500,18.4,2.8

So your command would be,

$ ./src/iperf3 -c 10.0.1.1 -d -t 1 -V | grep -Po '(?<=,)[0-9]+$|[0-9.]*(?= Mbits/sec)|(?<=local\/sender )[^%]*' | paste -d, - - -
于 2014-07-02T08:33:15.677 に答える