명령 출력에서 ​​소수점을 제거해야 합니다.

명령 출력에서 ​​소수점을 제거해야 합니다.

명령 추적에 작은 문제가 있습니다. 평균을 찾아 구하려고 하는데 소수점이 없는 출력이 필요합니다. 다음은 grep 조건이 거의 없는 파일에서 읽기를 시도하는 예제 명령입니다.

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

출력 받기672.714

실제 답변은 다음과 같이 반올림되어야 합니다.673

답변1

또한 다음 print과 같이 할 수 있습니다 .printf "%.0f\n"awkgrep

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

다음에 따라 가장 가까운 정수(x.3에서 x, x.7에서 x+1(음수는 x-1), x.5에서 x 또는 x+1(음수는 x-1)로 반올림됩니다. x 짝수인지 홀수인지)

답변2

에는 ceil함수 가 없지만 awk다음과 같이 정의할 수 있습니다.

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

다른 언어에서도 int()비슷한 전환이 적용된다는 점에 유의하세요.floor

감사의 말씀:여기

관련 정보