计算行百分比Bash一行命令

时间:2015-04-29 10:23:14

标签: bash percentage

我需要知道如何使用单行bash命令计算行百分比。假设我的文件test.tsv的内容如下所示:

Item Sort   Clicks A    Clicks B
Item 1  100 50
Item 2  60  40

我想知道按项目排序的每次点击的百分比是这样的:

Item Sort   Clicks A    Clicks B
Item 1  66.70%  33.33%
Item 2  60% 40%

关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:0)

使用awk进行此类操作,bash不进行实数/浮点运算。

Awk脚本:

NR==1 { print }
NR>1  { printf("%s %d %.2f%% %.2f%%\n"
              , $1, $2
              , ($3*100/($3+$4))
              , ($4*100/($3+$4))
              ) }

这意味着:

  • 如果行号为1,则按原样打印。
  • 对于其他行,按原样打印第一列和第二列,但计算第3列和第4列的相应百分比。

在一行中:

awk 'NR==1{print}NR>1{printf("%s %d %.2f%% %.2f%%\n", $1, $2, ($3*100/($3+$4)), ($4*100/($3+$4)))}' test.tsv