【问题标题】:Capturing certain value from iperf result using grep使用 grep 从 iperf 结果中捕获特定值
【发布时间】:2014-07-02 08:23:41
【问题描述】:

我使用 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”以及如何获取?

感谢您的回答

【问题讨论】:

    标签: grep iperf


    【解决方案1】:

    带有P(Perl-regex) 选项的grep 允许您包含多个正则表达式,

    $ 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, - - -
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-23
      • 2022-01-26
      • 2021-10-14
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多