명령 추적에 작은 문제가 있습니다. 평균을 찾아 구하려고 하는데 소수점이 없는 출력이 필요합니다. 다음은 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"
awk
grep
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
감사의 말씀:여기