kamadevin 发表于 2014-05-15 16:24

【急】【再求助】如何用awk命令统计fa序列的长度,要去掉换行符

本帖最后由 kamadevin 于 2014-05-15 17:16 编辑

如题,如何用awk命令统计fa序列的长度
例:
>gene1
AGCTAGCT
>gene2
AGCTAGCTAGCT
>gene3
AGCTAGCTAGCTAGCT

想要得到的结果是
gene1   8
gene2   12
gene3   16

gene和数字之间要用\t分开

该如何用awk命令实现?

补充,

序列会很长,当序列超过一行时会跳到下一行,中间应该夹了一个换行符
用刚才几位的命令读的时候没有去掉换行符
会读出空名字和序列数
求如何解决!

WilliBhamlll 发表于 2014-05-15 16:29

awk -F\> '/>/{s=$2;getline;print s"\t"length}' file

expert1 发表于 2014-05-15 16:33

读取NR%2==1的行当做key,NR%2==0的行,存数组里面,
最后len(arry)就能获取长度了,当然key也打印了。

代码从略。

kamadevin 发表于 2014-05-15 16:33

谢谢大神,已解决!

LikeLx 发表于 2014-05-15 16:34

本帖最后由 LikeLx 于 2014-05-15 16:35 编辑

awk '/^>/{getline s;sub(/>/,"");print $0"\t"length(s)}'

li0924 发表于 2014-05-15 16:38

awk -F">" '{getline s;print $2 "\t" length(s)}'

yestreenstars 发表于 2014-05-15 16:58

awk '{sub(/>/,"");getline s;print $0"\t"length(s)}'

54nwq 发表于 2015-03-14 08:39

awk '{sub(/>/,"");printf(NR%2==0)?" "length($0)ORS:$0}'

我是一隻羊 发表于 2015-03-14 09:21

本帖最后由 我是一隻羊 于 2015-03-14 09:41 编辑

awk '/>/{i=substr($1,2);next}{b+=length($0)}END{for(j=0;j++<asorti(b,c);)print c,b]}' inputfile

我爱你我的菜 发表于 2015-09-09 16:20

awk '/gene/{printf $0" ";getline s;print length(s)}' test.txt
页: [1] 2
查看完整版本: 【急】【再求助】如何用awk命令统计fa序列的长度,要去掉换行符