我正在编写shell脚本,我想得到ping结果,所以我写这样的代码:
ping_res=`ping -c 5 $ADMIN_GW -I $SRIOV_BOND | grep loss | awk '{print $6}' | awk -F "%" '{print $1}'`
大多数PC得到了这个结果:'100',有些PC得到了这个结果:'+ 5'。所以我运行这样的命令来检查原因:
ping_res=`ping -c 5 $ADMIN_GW -I $SRIOV_BOND | grep loss`
我得到了不同的结果,一个是:
5 packets transmitted, 0 received, 100% packet loss, time 4001ms
一个是:
5 packets transmitted, 0 received, +5 errors, 100% packet loss, time 4001ms
我不知道为什么,我想得到'100%',所以有一些方法可以正确得到结果。谢谢〜
答案 0 :(得分:0)
使用grep -o '[0-9]\+%'
隔离该部分行。
答案 1 :(得分:0)
<ping-commnad>| grep -Po '\d+%'
100%
此处,\d
代表一个数字,现在是+
符号后至少生成一个或多个数字。这是通过使用-P
标志来启用的,该标志启用perl
的正则表达式。