我试图弄清楚如何计算每列中大于某个数字(即 0.1)的值出现的次数,然后为每列打印该值。这里是一些示例数据,除了这需要是通用的,即适用于任意数量的列:
Data Sample1 Sample2 Sample3
row1 0.05 0.12 5.00
row2 0.00 5.00 8.75
row3 1.19 0.00 6.78
然后所需的输出可能类似于(计算大于 0.1 的数字):
Sample1: 1
Sample2: 2
Sample3: 3
Perl、awk 或 coreutils 都可以,我只需要将其构建到 bash 脚本中即可在数据表上输出一些统计信息。
我可以数一列,但我不知道如何计算所有列:
gawk -F"\t" 'NR>1 {if ($2>0.1) print $1;}' | wc -l
先谢谢您的帮助。
答案1
你就快到了,只需在循环中执行即可:
awk '{for(i=2;i<=NF;i++){if(NR==1)h[i]=$i;else if($i>0.1)x[i]++}}END{for(i in x){print h[i]": "x[i]}}'