我需要知道如何使用单行 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%
关于如何做到这一点的任何想法?
使用 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