计算序列中字符出现的次数

计算序列中字符出现的次数

我必须编写 unix 脚本来计算G序列中 char 出现的次数:"GTCGTAATGCGGATCGGAATCGA"

我想要输出为"number of nucleotide G is 8"

答案1

用bash

var='GTCGTAATGCGGATCGGAATCGA'
var="${var//[^G]}"
echo "Number of nucleotide G is ${#var}"

答案2

Awk解决方案:

awk '{ print "Number of nucleotide G is "gsub("G", "") }' <<<"GTCGTAATGCGGATCGGAATCGA"
Number of nucleotide G is 8

grep+wc解决方案:

printf "Number of nucleotide G is %d\n" $(grep -o 'G' <<<"GTCGTAATGCGGATCGGAATCGA" | wc -l)
Number of nucleotide G is 8

答案3

使用 Perl:

echo 'GTCGTAATGCGGATCGGAATCGA' | perl -ne 'printf "number of nucleotide G is %d\n", ($_ =~ tr/G/G/)'

tr这通过使用 Perl 的运算符来计算 G。它返回所做的替换次数,我们将用 G 替换任何 G。

输出将是

number of nucleotide G is 8

如果您想将其推广到也计算其他碱基,那么对基因组大小的数据运行多次,但是转到生物信息学 StackExchange 站点并在那里寻找答案。

相关内容