我有一个包含基因突变的 tsv 文件
基因 | 突变 |
---|---|
A | 错觉 |
乙 | 错觉 |
乙 | 删除 |
C | 删除 |
D | 删除 |
乙 | 沉默 |
乙 | 删除 |
我想:(1)选择具有基因B突变的行(2)计算突变的独特类型(3)计算每种类型的出现并排序。
输出应该是
删除2
错义 1
静音 1
我尝试了以下 bash 命令,但它不起作用:
awk '$1 == B' filename | cut -f2 | sort | uniq | wc -l
你可以这样做(假设输入在 /var/tmp/IP.tsv 中)
grep '^B\t' /var/tmp/IP.tsv | cut -f2 | sort -u | while read mutation; do \
echo $mutation $( grep -c "^B\t$mutation\$" /var/tmp/IP.tsv ); \
done
它不是超级优雅-但是....
您可以使用
grep -o
来过滤所需的输出,并使用 grep -c
来计算出现次数。
这远不是一个可靠的解决方案,但与您的起点并没有太大不同,应该可以完成工作:
#!/bin/bash
for mut in $(grep -o "^B.*" input.tsv | cut -f2 | sort | uniq)
do
printf "%s %s\n" $mut $(grep -c "^B.*$mut" input.tsv)
done
输出:
$ ./script.sh
Deletion 2
Missense 1
Silent 1