我想计算每个对象(在这里GeneID:1
,gi|479
,nf|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
。