Como escrever um script awk que captura o tempo do ping

3

Nesta linha:

Reply from 10.11.12.13 time=1035ms

como escrever um script awk que mostre apenas 1035 .

    
por Mohammad Reza Rezwani 02.09.2013 / 21:54

2 respostas

2

Você pode usar, por exemplo:

ping host | awk 'BEGIN {FS="[=]|[ ]"} {print $11}'

ou melhor parar ping depois de enviar um ou mais pacotes:

ping -c 1 host | awk 'BEGIN {FS="[=]|[ ]"} NR==2 {print $11}'

ou

ping -c 5 host | awk 'BEGIN {FS="[=]|[ ]"} NR>=2&&NR<=6 {print $11}'

Se você se referir a esta string: "Responder a partir de 10.11.12.13 time = 1035ms" e não à saída do comando ping , você pode usar:

echo "Reply from 10.11.12.13 time=1035ms" | awk 'BEGIN {FS="[=]|ms"} {print $2}'
    
por Radu Rădeanu 02.09.2013 / 22:11
1

Supondo que a hora seja sempre relatada em milissegundos:

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

Usando o GNU awk, imprima os dígitos após o primeiro = :

gawk 'match($0, /=([[:digit:]]+)/, a) {print a[1]}'
    
por glenn jackman 02.09.2013 / 22:14

Tags