請幫助我我有結果,它看起來像這樣:`
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
--- 192.168.1.1 ping statistics ---
300 packets transmitted, 300 received, 0% packet loss, time 299426ms
rtt min/avg/max/mdev = 1.136/4.454/24.153/3.206 ms
`
我需要搜索丟包,我這樣做:
ping -c 300 -q 192.168.1.1 | grep -oP '\d (?=% packet loss)'
它的作業原理,但有時 ping 結果如下所示:
--- 192.168.1.1 ping statistics ---
300 packets transmitted, 299 received, 0,333333% packet loss, time 299433ms
rtt min/avg/max/mdev = 1.175/4.424/23.546/3.077 ms
那么我必須使用
ping -c 300 -q 192.168.1.1 | grep -oP '\d .\d (?=% packet loss)'
是否可以結合這兩個查詢來顯示丟包結果?因為我不知道結果什么時候是分數,什么時候是整數
uj5u.com熱心網友回復:
您可以將它們組合為“數字或點” 。這在技術上是不正確的,但是使用 ping 可以安全地完成這項作業:
ping -c 300 -q 192.168.1.1 | grep -oP '[\d .,] (?=% packet loss)'
uj5u.com熱心網友回復:
您可以在\d 匹配分數后使用可選組修改正則運算式:
\d (,\d )?
該grep命令將變為:
grep -oP '\d (,\d )?(?=% packet loss)'
這里逗號用作小數點分隔符以匹配您的示例。如果您想按照評論中的建議匹配逗號或點,您可以使用以下片段:
\d ([,.]\d )?
如果你只想匹配點,那么你必須用反斜杠轉義它:
\d (\.\d )?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/378354.html
標籤:linux
下一篇:bash將值傳遞給遠程服務器
