我試圖創建一個腳本來處理來自ping的數據。因此,將與時間戳的標準格式來自文件:處理Ping數據(正則表達式)
PING google.com (4.34.16.45) 56(84) bytes of data.
[1393790120.617504] 64 bytes from 4.34.16.45: icmp_req=1 ttl=63 time=25.7 ms
[1393790135.669873] 64 bytes from 4.34.16.45: icmp_req=2 ttl=63 time=30.2 ms
[1393790150.707266] 64 bytes from 4.34.16.45: icmp_req=3 ttl=63 time=20.6 ms
[1393790161.195257] 64 bytes from 4.34.16.45: icmp_req=4 ttl=63 time=35.2 ms
--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 45145ms
rtt min/avg/max/mdev = 20.665/27.970/35.246/5.390 ms
我希望削減它只是時間戳,時間和請求數,像這樣(注意,這是從不同的數據集,給出一個例如):
0.026202538597014928 26.2 1
0.253859701473 24.5 2
1.0482067203067074 32.0 3
1.6627447926949444 139.6 4
2.2686229201578056 237.1 5
我意識到我需要使用sed來完成此操作。但是,我仍然很困惑,因爲表達式會切入正確的數據。我想我會沿着這些線:
cat $inFile | grep -o "$begin$regex$end" | sed "s/$end//g" | sed "s/$begin//g" > $outFile
我只是不知道$開始和$結束會是什麼。
TL; DR幫我理解正則表達式?
嗨比瑞,模式是這樣的,範圍是不必要的:'sed -n's /^\[\([^]]*\).* icmp_req = \([0-9] * \)。* time = \([0-9。] * \)。* $/\ 1 \ 3 \ 2/p''應該就夠了,不是嗎? – Scrutinizer
@Scrutinizer:你說得對。我用這個更簡單的答案更新了答案。 – Birei