使用awk对多行文件进行匹配和求和

使用awk对多行文件进行匹配和求和,awk,Awk,我正在尝试组合file.txt$1中的匹配行,然后为这些匹配显示“$2”的总和。谢谢:) File.txt ENSMUSG00000000001:001 ENSMUSG00000000001:002 ENSMUSG00000000001:003 ENSMUSG00000000002:003 ENSMUSG00000000002:003 ENSMUSG00000000003:002 所需输出 ENSMUSG00000000001 6 ENSMUSG00000000002 6 EN

我正在尝试组合file.txt
$1
中的匹配行,然后为这些匹配显示“$2”的总和。谢谢:)

File.txt

ENSMUSG00000000001:001
ENSMUSG00000000001:002
ENSMUSG00000000001:003
ENSMUSG00000000002:003
ENSMUSG00000000002:003
ENSMUSG00000000003:002
所需输出

ENSMUSG00000000001     6
ENSMUSG00000000002     6
ENSMUSG00000000003     2

awk -F':' -v OFS='\t' '{x=$1;$1="";a[x]=a[x]$0}END{for(x in a)print x,a[x]}' file > output.txt
我猜这只是一个输入错误:不是增加0美元,而是增加2美元。这给了我预期的输出。而且$1=”“不是必需的。为了确保没有任何有趣的2美元,你可以考虑1×2美元。
$ awk -F':' -v OFS='\t' '{sum[$1]+=$2} END{for (key in sum) print key, sum[key]}' file
ENSMUSG00000000001      6
ENSMUSG00000000002      6
ENSMUSG00000000003      2

我猜这只是一个输入错误:不是增加0美元,而是增加2美元。这给了我预期的输出。而且$1=”“不是必需的。为了确保没有任何有趣的2美元,你可以考虑1×2美元。< / P>不存在多条线可以不同,我编辑了原来的帖子来反映这一点。谢谢:)。不,可能有多行不同,我编辑了原始帖子以反映这一点。谢谢:)。我会试试这个。谢谢:)。2美元的
没有什么好玩的东西可以用
1.0*$2
解决。我会试试看。谢谢:)。2美元的
没有什么好玩的东西可以用
1.0*$2
解决。非常感谢:)。非常感谢:)。
$ awk -F':' -v OFS='\t' '{sum[$1]+=$2} END{for (key in sum) print key, sum[key]}' file
ENSMUSG00000000001      6
ENSMUSG00000000002      6
ENSMUSG00000000003      2