가장 가까운 숫자로 반올림

가장 가까운 숫자로 반올림

다음과 같은 데이터가 포함된 파일이 있습니다.

vserver-1 vserver-1_root 0.95 0.0019043 0.948047
vserver-1 home  10.00 8.25 1.75
vserver-1 usr 95 45.65 39.35
vserver-1 file0 100 89.15 10.85

원하는 형식의 출력 awk(가장 가까운 정수로 반올림됨)

vserver-1 vserver-1_root 1 0 1
vserver-1 home  10 8 2
vserver-1 usr 95 46 39
vserver-1 file0 100 89 11

답변1

고정된 5개 열 파일이 있다고 가정하면 다음을 수행합니다.

awk '{printf("%s %s %d %d %d\n",$1, $2, $3+.5, $4+.5, $5+.5)}' infile

이는 증가한다0.5to 필드는 %d소수 부분을 제거하여 일반적으로 가장 가까운 정수로 반올림하고 반올림합니다(예: 2.5).

답변2

%0.f부동 소수점 값을 가장 가까운 정수로 변환하는 가장 간단한 방법을 사용하십시오 .

awk '{printf ("%s %s %.0f %.0f %.0f\n",$1,$2,$3,$4,$5)}' file

답변3

반올림하려면 +0.5를 사용하고 인쇄하세요.%d

echo "$number" | awk '{ printf("%d", $1 + 0.5) }'

주어진 문자열에 대해,

vserver-1 vserver-1_root 0.95 0.0019043 0.948047 vserver-1 home 10.00 8.25 1.75 vserver-1 usr 95 45.65 39.35 vserver-1 file0 100 89.15 10.85

다음 명령을 사용하십시오.

awk '{printf "%s %s %d %d %d %s %s %d %d %d %s %s %d %d %d %s %s %d %d %d\n" , $1, $2, $3+0.5, $4+0.5, $5+0.5, $6, $7, $8+0.5, $9+0.5, $10+0.5, $11, $12, $13+0.5, $14+0.5, $15+0.5, $16, $17, $18+0.5, $19+0.5, $20+0.5}' filename

관련 정보