Linux 计算列中负数的和?

Linux 计算列中负数的和?,linux,awk,Linux,Awk,嗨,我有一个这样的文件: probeset_id submitted_id chr snp_pos alleleA alleleB 562_201 562_202 562_203 562_204 562_205 562_206 562_207 562_208 562_209 562_210 AX-75448119 Chr1_41908741 1 41908741 T C 0 -1 0 -1 0 0 0 0 0 -1 AX-75448118 Chr1_41908545 1 41908545

嗨,我有一个这样的文件:

probeset_id submitted_id chr snp_pos alleleA alleleB 562_201 562_202 562_203 562_204 562_205 562_206 562_207 562_208 562_209 562_210  
AX-75448119 Chr1_41908741 1 41908741 T C 0 -1 0 -1 0 0 0 0 0 -1 
AX-75448118 Chr1_41908545 1 41908545 T A 2 -1 2 2 2 -1 -1 2 2 0
AX-75448118 Chr1_41908545 1 41908545 T A 1 2 2 2 2 -1 2 2 2 0 
我想计算从第7列到最后的负数的总和(在实际文件中,我有102列):

我使用
awk
计算正态和(它工作得非常好):

但是我想做的是只计算负数的和。如果没有唠叨,我想要
0
。 所以我想找到一个awk命令,我为每一列运行,得到一个out out of
0
或一个负数,例如
-1-2-3
等等

这就是我所尝试的:

awk '/^-/ {n++;x+=$9} END {print x}' test.txt
awk '/^-/ {x+=$9} END {print x}' test.txt
awk 'NR>1' test.txt | awk '/^-/ {x+=$9} END {print x}'
但我什么也得不到!没有错误,现在回答! 我还试图获得理想的输出格式:

562_201 562_202 562_203 562_204 562_205 562_206 562_207 562_208 562_209 562_210 
0 -2 0 -1 0 -2 -1 0 0 -1 
我尝试了几件我认为基本上是错误的事情:

awk 'NR>1 {for ($i=7;i<=NF;$i++) if (x ~ /^-/) x+=$i }END{print x}' test.txt

awk'NR>1{for($i=7;i1{for(i=7;i您必须更加努力,您发布的最后一个示例非常接近。这将分别对列进行求和(如果您想要的话):


awk'NR==1{cols=NF-7;for(i=7;i1{for(i=7;i)你能给我推荐一本好的教程或书让我更好地理解这些东西吗?
awk 'NR>1 {for ($i=7;i<=NF;$i++) if (x ~ /^-/) x+=$i }END{print x}' test.txt
awk 'NR>1 {for (i=7;i<=NF;i++) if ($i ~ /^-/) x+=$i }END{print x}' test.txt
awk 'NR == 1 {cols = NF-7; for (i=7;i<=NF;i++) {header[i-7]=$i; x[i-7]=0;} } 
     NR>1 {for (i=7;i<=NF;i++) if ($i ~ /^-/) x[i-7]+=$i }
     END{for(i=0; i<=cols; i++) print header[i], x[i]}' <file