gpt4 book ai didi

awk 数组输出行数和平均值

转载 作者:行者123 更新时间:2023-12-04 02:17:32 26 4
gpt4 key购买 nike

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

最佳答案

你尝试引入一个新变量是行不通的。每个数组键都需要一个计数,因此变量应该是另一个数组。但在这种情况下,您不需要添加新数组,因为数组 c 已经包含每个键的计数。

awk '{k=$1 OFS $2;
s[k]+=$4; c[k]++}
END{for(i in s)
print i, s[i]/c[i], c[i] " bases" }' input

另请注意您的尝试如何不幸地在 END block 的右大括号之外设置了“基数”。

这里与问题描述不同的是,key不是$2,而是$1$2的组合。如果您真的需要 key 只是 $2,您确实需要一个新数组,但整个事情会变得相当复杂。

关于awk 数组输出行数和平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33023436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com