Precisa remover o ponto Decimal da saída do comando

0

Estou enfrentando um pequeno problema com o comando trace, onde estou tentando encontrar a média e obtê-lo, mas preciso de saída sem ponto decimal. Abaixo está o comando sample que está tentando ler de um arquivo com poucas condições grep.

grep "#COMPLETE#" Requestlog1.log | grep "#O#" | awk -F"#" '{ sum += $NF; n++ } END { if (n > 0) print sum / n; }'

Estou recebendo a saída 672.714

A resposta real deve ser arredondada para 673

    
por Irfan 24.05.2018 / 12:32

2 respostas

0

Não há nenhuma função ceil em awk , mas você pode definir uma:

... | awk -F"#" 'function ceil(x){return (x == int(x)) ? x : int(x)+1} { sum += $NF; n++ } END { if (n > 0) print ceil(sum / n); }'

Observe que int() arredonda, como faria floor em outros idiomas.

Créditos: aqui

    
por 24.05.2018 / 12:46
1

Você pode substituir seu print por printf "%.0f\n" . Observe também que awk pode fazer o trabalho de grep :

awk -F"#" '
  /#COMPLETE#/ && /#O#/ {sum += $NF; n++}
  END {if (n > 0) printf "%.0f\n", sum / n}'

Arredonda para o número inteiro mais próximo (x.3 para x, x.7 para x + 1 (x-1 para números negativos), x.5 para x ou x + 1 (x-1 para números negativos) dependendo sobre se x é par ou ímpar)

    
por 24.05.2018 / 12:57