小编dan*_*man的帖子

awk - 舍入到小数点后两位

我正在使用以下 awk 命令计算文件列中每个项目的百分比:

awk '{a[NR]=$2;x+=(b[NR]=$2);c[NR]=$1}END{while(++i<=NR)print c[i]"\t"a[i]"\t"100*b[i]/x"%"}' file.txt > out_file.txt
Run Code Online (Sandbox Code Playgroud)

文件.txt

N    38668442   
V    14008521   
ADJ  16112215   
Run Code Online (Sandbox Code Playgroud)

输出文件.txt

N    38668442   56,213%
V    14008521   20,3644%
ADJ  16112215   23,4226%
Run Code Online (Sandbox Code Playgroud)

但是,我希望 out_file.txt 中的百分比四舍五入为 2 位小数。

所需的 out_file.txt

N    38668442   56,21%
V    14008521   20,37%
ADJ  16112215   23,42%
Run Code Online (Sandbox Code Playgroud)

参考这篇文章:https : //stackoverflow.com/questions/18696096/awk-calculate-sum-of-2nd-column-and-percentage-wrt-sum-and-print

我试图集成printf "%s,%d,%0.2f%\n到我的代码中,即使通过减少参数并将表达式限制为%0.2f%\n.

 awk '{a[NR]=$2;x+=(b[NR]=$2);c[NR]=$1}END{while(++i<=NR)printf "%s,%d,%0.2f%\n",c[i]"\t"a[i]"\t"100*b[i]/x"%"}' file.txt > out_file.txt
Run Code Online (Sandbox Code Playgroud)

bc没有解决。为什么它不产生所需的输出?在我看来,它应该有效,因为我printf "%0.2f\n"在几个关于同一问题的帖子中找到了表达方式。我错过了一些微不足道的东西吗?

我非常感谢任何帮助或建议!

command-line awk

4
推荐指数
1
解决办法
3242
查看次数

标签 统计

awk ×1

command-line ×1