使用grep从iperf结果中获取某些值



我使用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)'

,但是否有可能获得"35500,18.4,2.8"使用grep和如何做到这一点?

谢谢你的回答

grep with P (Perl-regex) option允许你包含多个正则表达式,

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

所以你的命令应该是,

$ ./src/iperf3 -c 10.0.1.1 -d -t 1 -V | grep -Po '(?<=,)[0-9]+$|[0-9.]*(?= Mbits/sec)|(?<=local/sender )[^%]*' | paste -d, - - -

相关内容

  • 没有找到相关文章

最新更新