awk数组输出行数和平均值

时间:2015-10-08 18:34:03

标签: awk

感谢@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)

1 个答案:

答案 0 :(得分:4)

您尝试引入新变量不会起作用。每个数组键需要一个计数,因此该变量应该是另一个数组。但在这种情况下,您不需要添加新数组,因为数组$2已经包含每个键的计数。

$1

另请注意您的尝试是如何不幸地拥有" base"在$2区块的右大括号外面。

这与问题描述的不同之处在于,密钥不是$2,而是typeenum的组合。如果你真的需要密钥只是getResource(),你需要一个新的数组,但是整个事情会变得更加复杂。