计算字符串出现的次数

计算字符串出现的次数

我有一个这种格式的大型数据库:

0500506 gi|561108321|ref|NC_018143.2|   71446   0 
0500506 gi|561108321|ref|NC_018143.2|   71447   0
0500508 gi|561108321|ref|NC_018143.2|   71449   0
0500509 gi|561108321|ref|NC_018143.2|   71447   0

我想要做的是创建一个新表,其中包含第三列中每个出现的次数,如下所示

71446 1 0500506
71447 2 0500506,0500509
71449 1 0500508

重要的是,整行不会匹配,所以我想确保我只匹配单列中的值。我假设我可以采用以下解决方案之一 使用 grep 计算出现的总数,但我不确定如何。

非常感谢,梦

答案1

awk可能更能胜任这项任务

awk '{sep=$3 in a?",":"";b[$3]++;
     a[$3]=a[$3]sep$1}; END{for (k in a) print k, b[k], a[k]}' file

相关内容