Как я могу заставить 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
Откройте терминал и выполните эту команду:
ping -c 4 google.com | awk -F "[=]|[ ]" '/bytes from/{print NR "\t" $11/1000 }' > out.txt
, Где:
-c 4
(например, 4)
Пределы количество запросов, так, чтобы "awk" мог записать в файл.
$11/1000
Преобразовывает миллисекунды в секунды
Если Вы настаиваете 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