从 linux 命令行 ping 中仅提取整数毫秒

Extract only integer milliseconds from linux commandline ping

我尝试从 OpenWRT 命令行中的连续 ping 输出中提取整数毫秒。来自 ping 8.8.8.8

的示例
64 bytes from 8.8.8.8: seq=6 ttl=55 time=6.356 ms
64 bytes from 8.8.8.8: seq=7 ttl=55 time=6.520 ms
...

期望输出应如下所示:

6
6
...

只是整数(数字的左边部分)。没有小数部分也没有点。

我尝试使用管道切割输出,首先切割等号 ping 8.8.8.8 | cut -d '=' -f 4 有效

6.389 ms
6.051 ms
...

然后也切割点以仅获得整数 ping 8.8.8.8 | cut -d "=" -f4 | cut -d '.' -f1 但随后根本没有输出显示。我也尝试过使用 awk,但是当我对这些命令使用多个管道时,没有输出。你能告诉我怎么做吗?

您可以通过 perl(例如)管道输出并使用简单的正则表达式:

ping -c3 8.8.8.8 | perl -nle '/time=(\d+)/ && print '

这将打印整数部分。

您还可以使用 printf

将毫秒四舍五入为最接近的整数
ping -c3 8.8.8.8 | perl -ne '/time=([\d\.]+) ms/ && printf "%.0f\n", '