perl – 计算文本文件中匹配的术语数量?
发布时间:2020-12-15 23:34:47 所属栏目:大数据 来源:网络整理
导读:我试图计算输入列表中匹配项的数量,该列表包含每行一个术语和一个数据文件,并创建一个包含匹配(grep’d)项和匹配数的输出文件. input_list.txt如下所示: + 5S_rRNA+ 7SK+ AADAC+ AC000111.3+ AC000111.6 data.txt文件: chr10 101780038 101780209 5S_rRNAc
我试图计算输入列表中匹配项的数量,该列表包含每行一个术语和一个数据文件,并创建一个包含匹配(grep’d)项和匹配数的输出文件.
input_list.txt如下所示: + 5S_rRNA + 7SK + AADAC + AC000111.3 + AC000111.6 data.txt文件: chr10 101780038 101780209 5S_rRNA chr10 103578280 103578430 5S_rRNA chr10 112327234 112327297 5S_rRNA chr10 120766459 120766601 7SK chr10 127408228 127408317 7SK chr10 127511874 127512063 AADAC chr10 14614140 14614294 AC000111.3 chr10 14695964 14696146 AC000111.6 我想创建一个输出文件(output.txt),其中包含匹配的术语及其相应的计数. + 5S_rRNA 3 + 7SK 2 + AADAC 1 + AC000111.3 1 + AC000111.6 1 到目前为止,我已经使用以下脚本生成了包含所有匹配术语的列表,但是所有提供匹配术语计数的尝试都没有奏效. exec < input_list.txt while read line do grep -w data.txt | awk '{print $0}'| sort| uniq >> grep_output.txt done 我试过grep -o -w | wc -l和grep -w data.txt | wc -l等但我无法弄清楚如何生成包含匹配术语及其相应计数的输出列表. 任何建议都会很棒! 解决方法
你可以从input.txt中搜索单词并使用uniq来获取计数:
cut -d' ' -f2 input.txt | grep -o -f - data.txt | sort | uniq -c 得到: 3 5S_rRNA 2 7SK 1 AADAC 1 AC000111.3 1 AC000111.6 您还可以添加另一个sed来获取格式化输出: cut -d' ' -f2 input.txt | grep -o -f - data.txt | sort | uniq -c | sed 's/s*([0-9]*)s*(.*)/+ 2t1/' 生产: + 5S_rRNA 3 + 7SK 2 + AADAC 1 + AC000111.3 1 + AC000111.6 1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |