使用 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 位小数。我宁愿没有小数。我以前能够使用以下方法对数字进行四舍五入公元前或者打印函数,但我好像只能用printawk.这个问题有什么好的解决办法吗?

答案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是具有两位小数的浮点数。使用%.0for %i(整数)仅显示整数部分。

答案2

添加%.0f到您的打印声明中。

例子

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

给出输出为 6。

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

给出输出 5。

相关内容