如何使用Bash筛选Gene B突变并统计排序突变类型出现次数
解决TSV文件中基因B的突变类型统计问题
问题场景
现有一个包含基因突变信息的TSV文件,数据如下:
| Gene | Mutations |
|---|---|
| A | Missense |
| B | Missense |
| B | Deletion |
| C | Deletion |
| D | Deletion |
| B | Silent |
| B | Deletion |
需要完成以下操作:
- 筛选出Gene B对应的突变行
- 统计独特的突变类型
- 统计每种突变类型的出现次数并排序
期望输出:
Deletion 2 Missense 1 Silent 1
原命令问题分析
尝试的命令无法达成需求:
awk '$1 == B' filename | cut -f2 | sort | uniq | wc -l
问题点:
awk中字符串比较时,B需加双引号,否则会被识别为变量而非字符串常量- 最终用
wc -l仅能输出独特突变类型的数量,无法得到每种类型的具体出现次数,不符合要求
正确命令及解释
使用以下命令可完成所有需求:
awk '$1=="B"{n[$2]++} END{ for(m in n)print m,n[m] }' filename | sort
命令拆解说明:
awk '$1=="B"{n[$2]++}':遍历TSV文件,当第一列值为"B"时,以第二列的突变类型为键,在数组n中对应计数加1END{ for(m in n)print m,n[m] }:文件遍历完成后,输出每个突变类型及其对应的出现次数| sort:对输出结果按突变类型名称排序,与期望输出顺序匹配
内容的提问来源于stack exchange,提问作者Adrian Tepes
相关产品推荐
相关产品推荐

