我有一个包含这样数据的文件
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.5到字段然后%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