我想计算每个对象(在这里GeneID:1gi|479nf|NZ_AC14)的所有字符(ACGT),以便我知道每个对象的长度(无需计算A的数量, C..)

>GeneID:1
ATGCGTTTGCGTTTGCAAATCGACTAGCTTTTGGCCCAAAGCGTGCTGCAAAAGTATGGA
AGTAAAGCTACCGTACGTAGCTAAGCCTACCGATCGATCGATCGATCGACGCCCCCCCCC
>gi|479
ATGGATTGGATGGAATCACAATTCAAGACATGTACGCATGGCTGCGACTGGAAG
>nf|NZ_AC14
ATGGCTAGATATGTCGTATGTTGGATGTTCACCATCAACAATCCCG


我有多个这样的文件,我想使用bash命令使所有操作都自动化,但我什至不知道从哪里开始(大多数情况下我只在以>开头的行中计数)

所需的输出将是:

>GeneID:1 121
>gi|479 54
>nf|NZ_AC14 47


但是如果我只有这个号码也可以。

谢谢

最佳答案

使用awk:

awk -v RS='>[^\n]+' 'oRT{gsub("\n","");print oRT,length()}{oRT=RT}'  file


记录分隔符设置为以>开头的基因名称。记录的所有字段通过删除换行符而串联在一起。然后打印记录的长度。

变量oRT设置为捕获上一行的记录终止符RT

09-25 17:42