Как написать awk-скрипт, который ловит время пинга

В этой строке:

Reply from 10.11.12.13 time=1035ms

, как написать сценарий awk, который выдает только 1035.

3
задан 3 September 2013 в 01:42

2 ответа

Вы можете использовать, например:

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}'
0
ответ дан 3 September 2013 в 01:42

О принятии времени всегда сообщают в миллисекундах:

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

Используя GNU awk, распечатайте цифры после первого =:

gawk 'match($0, /=([[:digit:]]+)/, a) {print a[1]}'
1
ответ дан 3 September 2013 в 01:42

Другие вопросы по тегам:

Похожие вопросы: