Как мне написать скрипт awk, который поймает время пинга в секундах?

Как я могу заставить ping показывать мс и время в (секундах)?

Я нашел этот скрипт:

$ ping google.com | awk 'BEGIN {FS="[=]|[ ]"} {print $11}'
16.8
16.8
15.7
18.8

Как мне написать скрипт на awk, который выводит в секунд?

1  16.8
2  16.8
3  15.7
4  18.8

Сохраненные значения необходимо сохранить в файл >> file.txt

0
задан 13 April 2015 в 19:44

2 ответа

Откройте терминал и выполните эту команду:

ping -c 4 google.com | awk -F "[=]|[ ]" '/bytes from/{print NR "\t" $11/1000 }' > out.txt

, Где:

  • -c 4 (например, 4)

    Пределы количество запросов, так, чтобы "awk" мог записать в файл.

  • $11/1000

    Преобразовывает миллисекунды в секунды

2
ответ дан 13 April 2015 в 19:44

Если Вы настаиваете awk, Вы могли бы сделать:

$ ping -c 4 google.com | 
    awk -F "[= ]" '$2=="bytes"{print ++c "\t" $(NF-1)/1000 }' 
1   0.0361
2   0.036
3   0.0357
4   0.0363

Лично, я сделал бы это с помощью grep и только использовал бы awk для умножения миллисекунд 1 000:

$ ping -c4 google.com | grep -Po 'time=\K[\d.]+' | awk '{print NR,$1/1000}'
1 0.0357
2 0.0364
3 0.0364
4 0.0364

Или Perl:

$ ping -c4 google.com | perl -lne '/time=([\d.]+)/ && print ++$c,"\t",$1/1000'
1   0.0361
2   0.0357
3   0.0363
4   0.0361

Для сохранения вывода в файле просто используйте перенаправление. Добавьте > outfile к любой из команд выше:

ping -c4 google.com | perl -lne '/time=([\d.]+)/ && print ++$c,"\t",$1/1000' > outfile
1
ответ дан 14 April 2015 в 05:44

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

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