在这一行中:
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]}'