感谢@karakfa,下面的awk
数组会产生输出。我正在尝试将$2
添加到数组并输出它。 $2
基本上是唯一条目出现的次数。当我正在使用awk
阵列时,我不知道我的尝试是否接近。
输入:
chr1:955542-955763 AGRN:exon.1 1 0
chr1:955542-955763 AGRN:exon.1 2 0
chr1:985542-985763 AGRN:exon.2 1 0
chr1:985542-985763 AGRN:exon.2 2 1
我的剧本:
awk '{k=$1 OFS $2;
l=$2; # Is this correct?
s[k]+=$4; c[k]++}
END{for(i in s) # Is this correct?
print i, s[i]/c[i]},
"(lbases)" # Is this correct?' input
当前输出:
chr1:955542-955763 AGRN:exon.1 0
chr1:985542-985763 AGRN:exon.2 0.5
期望的输出:
chr1:955542-955763 AGRN:exon.1 0 (2 bases)
chr1:985542-985763 AGRN:exon.2 0.5 (2 bases)
答案 0 :(得分:4)
您尝试引入新变量不会起作用。每个数组键需要一个计数,因此该变量应该是另一个数组。但在这种情况下,您不需要添加新数组,因为数组$2
已经包含每个键的计数。
$1
另请注意您的尝试是如何不幸地拥有" base"在$2
区块的右大括号外面。
这与问题描述的不同之处在于,密钥不是$2
,而是type
和enum
的组合。如果你真的需要密钥只是getResource()
,你需要一个新的数组,但是整个事情会变得更加复杂。