awk/print를 사용하여 숫자 형식 지정

awk/print를 사용하여 숫자 형식 지정

업로드/다운로드 속도를 높이는 정말 멋진 코드를 찾았습니다.

awk '{ if (l1) {
        print "↓"($2-l1)/1024"kB/s ","↑"($10-l2)/1024"kB/s"
    } else {
        l1=$2; l2=$10;
    }
}' <(grep wlan0 /proc/net/dev) <(sleep 1; grep wlan0 /proc/net/dev)

그러나 소수점 이하 4자리까지 반환됩니다. 차라리 소수점이 없는 게 낫겠어요. 이전에는 다음을 사용하여 숫자를 반올림할 수 있었습니다.기원전또는인쇄 기능print, 그런데 이것 만 사용할 수 있는 것 같습니다 awk. 이 문제에 대한 좋은 해결책이 있습니까?

답변1

#!/bin/awk -f
{
     if (l1) {
             printf("↓ %.2f kB/s ↑ %.2f kB/s\n" \
               , ($2 - l1) / 1024, ($10 - l2) / 1024)
     } else {
             l1 = $2;
             l2 = $10;
     }
}

%.2f소수점 이하 두 자리의 부동 소수점 숫자입니다. 정수 부분만 표시하려면 %.0f또는 (정수)를 사용하세요 .%i

답변2

%.0f인쇄 명세서에 추가하세요 .

echo "5.54" | awk '{printf "%.0f\n", $1}'

6의 출력을 제공합니다.

echo "5" | awk '{printf "%.0f\n", $1}'

출력 5를 제공합니다.

관련 정보