如何编写一个 awk 脚本来捕获 ping 的时间

如何编写一个 awk 脚本来捕获 ping 的时间

在这一行中:

Reply from 10.11.12.13 time=1035ms

如何编写一个 awk 脚本来显示以下内容1035

答案1

例如,您可以使用:

主持人| awk ‘BEGIN {FS="[=]|[ ]"} {打印 $11}’

或者,最好ping在发送一个或多个数据包后停止:

ping -c 1主持人| awk ‘BEGIN {FS="[=]|[ ]"} NR==2 {打印 $11}’

或者

ping -c 5主持人| awk ‘BEGIN {FS="[=]|[ ]"} NR>=2&&NR<=6 {打印 $11}’

如果您参考的是此字符串:“Reply from 10.11.12.13 time=1035ms”而不是命令的输出ping,则可以使用:

echo "Reply from 10.11.12.13 time=1035ms" | awk 'BEGIN {FS="[=]|ms"} {print $2}'

答案2

假设时间总是以毫秒为单位报告:

$ echo "Reply from 10.11.12.13 time=1035ms" | grep -oP '\d+(?=ms)'
1035

使用 GNU awk,打印第一个之后的数字=

gawk 'match($0, /=([[:digit:]]+)/, a) {print a[1]}'

相关内容