Usando o awk para extrair um valor, execute um cálculo

1

Eu tenho saída em um arquivo que se parece com isso:

{tid=4, total=3, column.id=[5.0]}  
{tid=2, total=1, column.id=[5.0]}
{tid=5, total=8, column.id=[5.0]}
{tid=8, total=6, column.id=[5.0]}
elapsed time: 10 milliseconds
current time: Thu Sep 15 16:15:30

Este conjunto de saída é repetido várias vezes com diferentes tempos decorridos. Eu quero extrair o inteiro representando o tempo decorrido todas as vezes que aparece e, em seguida, encontrar o tempo médio decorrido. Acredito que posso obter o tempo decorrido usando o awk, mas não tenho certeza da sintaxe correta aqui.

    
por mariahm24 15.09.2016 / 22:46

1 resposta

2

Isso deve funcionar, supondo que esteja sempre em milissegundos.

awk '/^elapsed time:/ {T+=$3;C++}; END {print T/C}' test.txt 

/^elapsed time:/ encontrar linhas correspondentes ao padrão desejado

{T+=$3;C++}; adicione a terceira coluna em T acima e conte quantas vezes fazemos C

END {print T/C} imprime a nossa média.

    
por 15.09.2016 / 22:58

Tags