Text-Processing

四捨五入到最接近的數字

  • May 17, 2018

我有一個包含這樣數據的文件

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

使用%0.f是將浮點值轉換為最接近的整數的最簡單方法:

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

假設您已修復 5 列文件,那麼您將執行以下操作:

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

這會將0.5添加到欄位,然後%d將刪除小數部分,導致通常舍入到最接近的整數,一半(例如 2.5)向上舍入。

引用自:https://unix.stackexchange.com/questions/444292