2017-05-05 55 views
1

我有以下在LEDE OS上運行的iperf版本2的輸出。我正在試圖解析輸出以獲得數字,這是IPERF會話的平均吞吐量Mbits/sec之前的數字。但是,似乎每列之間的分隔不符合特定數量的空格或製表符。另外,由iperf生成的CSV格式會產生奇怪的結果,因此我必須依賴iperf的常規輸出。任何建議如何使用正則表達式或awk命令解析輸出?解析非常規命令輸出

iperf命令:

iperf -c 10.0.0.7 -t 10 -i 0.1 -f m 

輸出:

[ 3] 0.00-10.00 sec 1889 MBytes 1584 Mbits/sec 15114/0   0  
2483K/3302 us 

回答

2

可以使用grep那些。

iperf -c 10.0.0.7 -t 10 -i 0.1 -f m | grep -o -E '\w+ Mbits/sec' 

或者更準確:

iperf -c 10.0.0.7 -t 10 -i 0.1 -f m | grep -o -E '[0-9]+ Mbits/sec' 

,僅保留數字,你可以使用另一個正則表達式,

iperf -c 10.0.0.7 -t 10 -i 0.1 -f m | grep -Po '[[:digit:]]+ *(?=Mbits/sec)' 

以上,[[:digit:]]+[0-9]+是相同的,一致的行中的數字。

對於MacOS X中的FreeBSD grep,-P將不起作用。直接使用perl

iperf -c 10.0.0.7 -t 10 -i 0.1 -f m | perl -nle 'print $& if m{\d+ *(?=Mbits/sec)}' 
+0

它可以工作,但它在輸出中打印Mbits/sec。任何想法如何去除Mbits /秒? – IoT

+0

請參閱我的編輯.... – iamauser

+0

新命令有一個問題,它不起作用: '用法:grep [-HhnlLoqvsriwFE] [-m N] [-A/B/CN] PATTERN/-e PATTERN .../- f文件[文件] ...' – IoT