以简单格式(如“10ms”)打印 ping 结果

以简单格式(如“10ms”)打印 ping 结果

每当我运行“ping -c 1 www.google.com”时,我都会得到以下结果:

PING www.google.com (xxx.xx.xxx.xxx) 56(84) bytes of data.
64 bytes from xxxxxxxx-xx-xxxxxxxxxx.net (xxx.xx.xxx.xxx): icmp_seq=1 ttl=56 
time=25.8 ms

--- www.google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 25.816/25.816/25.816/0.000 ms

但是,我想以简单的格式打印出 ping,如下所示:

[23:00:25] 25.8 ms

我怎样才能实现这个目标?到目前为止我已经尝试过

ping -c 1 www.google.com | grep -oP '(?<=time\s/)w+' > ping.txt

打印不带时间的 ping,但是正如您可能猜到的那样,它不起作用。

答案1

尝试

ping -c 1 www.google.com | awk 'NR==2{print strftime("[%T]",systime()),substr($8,6),"ms"}'

使用获取当前时间systime()并将其格式化为 %T 表示形式 (hh:mm:ss) strftime。然后打印字段 8 的相关部分,以消除time=废话。

例子

ping -c 1 www.google.com | awk 'NR==2{print strftime("[%T]",systime()),substr($8,6),"ms"}'
[21:32:05] 1.03 ms

答案2

其他awk方法:

ping -c1 www.google.com | awk -F'=' 'NR==2{ print strftime("[%T]",systime()),$NF; exit}'
[01:35:47] 41.5 ms

  • -F'='- 自定义字段分隔符

  • $NF- 最后一个字段值

  • exit- 在第二条记录上立即停止处理输入

相关内容