典型ping命令的输出是 -
--- 192.168.1.107 ping statistics ---
2 packets transmitted, 1 received, 50% packet loss, time 1008ms
rtt min/avg/max/mdev = 0.288/0.288/0.288/0.000 ms
我想在shell脚本中运行ping命令时,在终端窗口上只显示“50%丢包”部分。我该怎么办呢?
答案 0 :(得分:1)
-o
告诉grep
仅打印匹配部分:
ping -c2 -q targethost | grep -o '[^ ]\+% packet loss'
如果ping的输出被视为以逗号分隔的字段,那么,如示例输出中所示,数据包丢失信息位于第三个字段中。这允许我们使用awk如下:
ping -c2 -q targethost | awk -F, '/packet loss/{print $3;}'
答案 1 :(得分:1)
使用grep:
ping -c10 -f -q localhost | grep -E -o '[^[:space:]]+ packet loss'
使用awk:
ping -c10 -f -q localhost | awk -F', ' '/packet loss/ { print $3 }'
grep -o不是posix,而awk解决方案取决于输出格式。