gpt4 book ai didi

unix - 将文件名添加到统计数据中

转载 作者:行者123 更新时间:2023-12-02 18:21:04 24 4
gpt4 key购买 nike

假设我有类似于以下内容的文件。

文件 1

1,144931087,144931087,T,C  
16,89017167,89017167,C,G
17,7330235,7330235,G,T
17,10222478,10222478,C,T

文件 2

1,144931087,144931087,T,C
16,89017167,89017167,C,G
17,10222478,10222478,C,T

文件 3

17,10222478,10222478,C,T  

我想知道每个文件中存在多少次重复值,所以理想情况下,输出如下:

输出

2 1,144931087,144931087,T,C  
2 16,89017167,89017167,C,G
3 17,10222478,10222478,C,T
1 17,7330235,7330235,G,T

我使用以下命令来计算重复值。

sort Test1.csv Test2.csv Test3.csv | uniq --count

现在我希望添加计数输出的文件名。我想要的输出应该如下所示:

Test1 Test2 2 1,144931087,144931087,T,C  
Test1 Test2 2 16,89017167,89017167,C,G
Test1 Test2 Test 3 3 17,10222478,10222478,C,T
Test1 1 17,7330235,7330235,G,T

任何人都可以帮助我获得所需的输出,或者任何人都可以建议我更好的方法来获得所需的输出吗?

最佳答案

使用 awk。对我聪明的文件命名方案感到抱歉:

$ awk '{
a[$0]++ # count hits
b[$0]=b[$0] FILENAME " " # store filenames
}
END {
for(i in a)
print b[i] a[i],i # output them
}' foo bar baz
foo bar 2 1,144931087,144931087,T,C
foo bar 2 16,89017167,89017167,C,G
foo bar baz 3 17,10222478,10222478,C,T
foo 1 17,7330235,7330235,G,T

已更新每条评论:

$ awk 'BEGIN {
FS=OFS=","
}
{
a[$1 OFS $2 OFS $3 OFS $4]++
b[$1 OFS $2 OFS $3 OFS $4]=b[$1 OFS $2 OFS $3 OFS $4] FILENAME "|"
c[$1 OFS $2 OFS $3 OFS $4]=$0 # keep the last record with
} # specific key combination
END {
for(i in a)
print b[i] "," a[i],c[i]
}' foo bar baz
foo|bar|,2,16,89017167,89017167,C
foo|,1,17,7330235,7330235,G
foo|bar|,2,1,144931087,144931087,T
foo|bar|baz|,3,17,10222478,10222478,C

关于unix - 将文件名添加到统计数据中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53809293/

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