如何使用shell修改终端中ping命令的输出?

时间:2015-06-18 22:36:57

标签: shell ping

典型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%丢包”部分。我该怎么办呢?

2 个答案:

答案 0 :(得分:1)

使用grep

-o告诉grep仅打印匹配部分:

ping -c2 -q targethost | grep -o '[^ ]\+% packet loss'

使用awk

如果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解决方案取决于输出格式。