bash,如何求和一列的整数值?

时间:2019-08-29 14:40:39

标签: linux bash awk

我需要找到一种方法来汇总文件中特定列的所有整数值,并打印其结果。 这是我的文件:

  

<<<该程序为此找到了0个ARIH1基因的稀有变种   HEALTHY_CONTROL <<<< / p>      

<<<该程序为此找到了0个ARIH1基因的稀有变种   HEALTHY_CONTROL <<<< / p>      

<<<该程序为此找到了ARIH1基因的1个罕见变体   HEALTHY_CONTROL <<<< / p>      

<<<该程序为此找到了0个ARIH1基因的稀有变种   HEALTHY_CONTROL <<<< / p>      

<<<该程序为此找到了0个ARIH1基因的稀有变种   HEALTHY_CONTROL <<<< / p>      

<<<该程序为此发现了ARIH1基因的2种罕见变体   HEALTHY_CONTROL <<<< / p>      

<<<该程序为此找到了0个ARIH1基因的稀有变种   HEALTHY_CONTROL <<<< / p>      

<<<该程序为此找到了0个ARIH1基因的稀有变种   HEALTHY_CONTROL <<<< / p>      

<<<该程序为此发现了ARIH1基因的2种罕见变体   HEALTHY_CONTROL <<<< / p>      

<<<该程序为此找到了0个ARIH1基因的稀有变种   HEALTHY_CONTROL <<<< / p>      

<<<该程序为此找到了ARIH1基因的1个罕见变体   HEALTHY_CONTROL <<<< / p>

我要打印第5列的总和,即稀有变体的总数。 在此示例中,它应打印6。

我尝试了以下命令(该命令不起作用):

grep "rare variants for the gene ARIH1" fileName | tail -n+2 | awk -F " " '{sum+=$5} END {print sum}'

此命令显示1,这是错误的。

我该怎么办?谢谢!

2 个答案:

答案 0 :(得分:0)

awk -F " " '/<<< The/ {sum += $5} END {print sum}' file

上面的命令应该为您提供所需的输出。 您可以排除-F开关,因为默认情况下awk将以空格作为分隔符。

答案 1 :(得分:0)

尝试以下awk脚本:

awk 'BEGIN{sum=0} {if ($0 ~ /rare variants for the gene ARIH1/) sum+=$5} END{ print "Sum is ",sum}' fileName

或更短形式的上述脚本。

awk '/rare variants for the gene ARIH1/{sum+=$5} END{print "Sum is ",sum}' fileName

工作:它检查是否在行(rare variants for the gene ARIH1)中找到以下模式if ($0 ~ /pattern/)。如果匹配,则对第5列中的值求和。最后,它打印最终的和。