В этой строке:
Reply from 10.11.12.13 time=1035ms
, как написать сценарий awk, который выдает только 1035
.
Вы можете использовать, например:
ping host | awk 'BEGIN {FS="[=]|[ ]"} {print $11}'
или, что лучше, остановить ping
после отправки одного или нескольких пакетов:
ping -c 1 host | awk 'BEGIN {FS="[=]|[ ]"} NR==2 {print $11}'
или
ping -c 5 host | awk 'BEGIN {FS="[=]|[ ]"} NR>=2&&NR<=6 {print $11}'< hr>
Если вы ссылаетесь на эту строку: «Ответ от 10.11.12.13 time = 1035ms», а не на вывод команды ping
, вы можете использовать:
echo "Reply from 10.11.12.13 time=1035ms" | awk 'BEGIN {FS="[=]|ms"} {print $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]}'