2015-01-04 46 views
-3

有這樣我如何從一個文件中提取平參數在bash腳本

PING 172.17.9.1 (172.17.9.1) 1000(1028) bytes of data. 
1008 bytes from 172.17.9.1: icmp_seq=1 ttl=64 time=0.943 ms 
1008 bytes from 172.17.9.1: icmp_seq=2 ttl=64 time=0.855 ms 
1008 bytes from 172.17.9.1: icmp_seq=3 ttl=64 time=0.860 ms 
. 
. 
--- 172.17.9.1 ping statistics --- 
100 packets transmitted, 100 received, 0% packet loss, time 9958ms 
rtt min/avg/max/mdev = 0.836/1.710/37.591/4.498 ms 

我想提取丟包,時間,平均使用bash腳本RTT一個ping文件。我該怎麼辦?! 感謝

+0

看看這個:http://stackoverflow.com/questions/8314219/how-to-get-the從打包中收到數據包的數量 並得出你自己的結論 – tomloprod 2015-01-04 11:01:14

+1

你應該從閱讀[問]開始。 'grep'和'man sed'也可以提供幫助。 – jm666 2015-01-04 11:04:38

+0

我是新來的,無論如何謝謝你! – sgh 2015-01-04 11:22:37

回答

1

試着這麼做:

awk -F',|/' '/time/{x=$3$4}/rtt/{print x " " $5}' ping.txt | sed 's/[^0-9 .]*//g' 
Output: 
0 958 1.710 
+0

謝謝,但我只想要數字,而不是它們之間的字符串。 – sgh 2015-01-04 11:34:09

+0

你可以像''一樣刪除所有的字符sed's/[^ 0-9] * // g',或者您可以使用gsub刪除數字以外的所有字符。見編輯的答案。我使用了sed,因爲我不想讓awk複雜化。 – SMA 2015-01-04 11:59:48

+0

它也消除了浮點數的問題! – sgh 2015-01-04 16:23:24

1

可以awk作爲

$ awk -F"[,/]" '/packet loss/{print $3} /rtt/{print " rtt",$2,$5}' input 
0% packet loss 
rtt avg 1.710 
相關問題