Bash 统计多个文件中单词列表的出现次数

Bash 统计多个文件中单词列表的出现次数,bash,Bash,我有一个带有单词列表(基因名称,用换行符分隔)的.txt文件,我想计算它们在多个文件夹的多个文件中出现的次数 文件夹如下所示: main文件夹/family\u ID/variants/FILE.table 每个家庭一个文件夹 我试过使用grep,它可以计数,但每个文件输出一行: WDFY3 0 WDFY3 0 WDFY3 1 WDFY3 0 WDFY3 0 KMT2C 1 KMT2C 0 KMT2C 0 KMT2C 0 KMT2C 0 我希望这样: WDFY3 1 KMT2C 1 以下是我

我有一个带有单词列表(基因名称,用换行符分隔)的.txt文件,我想计算它们在多个文件夹的多个文件中出现的次数

文件夹如下所示: main文件夹/family\u ID/variants/FILE.table

每个家庭一个文件夹

我试过使用grep,它可以计数,但每个文件输出一行:

WDFY3 0
WDFY3 0
WDFY3 1
WDFY3 0
WDFY3 0
KMT2C 1
KMT2C 0
KMT2C 0
KMT2C 0
KMT2C 0
我希望这样:

WDFY3 1
KMT2C 1
以下是我使用的代码:

while read p; do
    grep -FRchi "$p" --include \*.FILE.table | sed "s/^/$p /" >> /MyData/MainFolder/count.txt
done < /MyData/Resources/gene_list.txt
读取p时
;做
grep-FRchi“$p”--包括\*.FILE.table | sed“s/^/$p/”>/MyData/MainFolder/count.txt
完成
格雷普有可能吗?我应该使用awk/sed吗


谢谢

一种方法是让
grep
输出所有行,对它们进行排序,然后计数:

#!/bin/bash

genes=/MyData/Resources/gene_list.txt

grep -RhioFf "$genes" --include 'FILE.table' | sort | uniq -c

这将在第一列中输出计数,在第二列中输出基因。

从脚本中获取输出并将其传输到

awk '{ arry[$1]+=$2 } END { for (i in arry) { print i" "arry[i] } }' 

gene_list.txt
中的行是否唯一?将脚本的输出传输到awk'{arry[$1]+=$2}END{for(i in-arry){print i”“arry[i]}}是的,一行对应一个基因,总共1130行,这是从一条已经删除的评论中得出的结论:我应该提到这些行是这样的:14774493809 SNP同义编码(低|沉默| caG/caA | Q109 | 796 | IRF2BPL |编码| NM | 024496.3 | 1 |1)NA 13520.p1 C/C/C/T C/T这样它会在计数后打印整行,你介意发布一些真实的数据行并告诉上面的数据应该计数哪些部分吗?我应该提到这些行是这样的:14 77493809 SNP同义编码(低|静默| caG/caA | Q109 | 796 | IRF2BPL |编码| NM 024496.3 | 1 |)NA 13520.p1 C/C C/C/T C/T,所以它在count@EmilCioran更新了新的信息。