如何用awk计算序列中残基的总数?

时间:2012-08-14 10:09:06

标签: awk

我有一个包含蛋白质序列的文本文件。我想得到每个序列中的残基总数。我怎么能用awk做到这一点?

>1GS9
PYCPAAVIAPVV
>1LE2
DFEFAKWKN
>1NFN
ADAPPDS

期望的输出

1GS9 - 12
1LE2 - 9
1NFN - 7

5 个答案:

答案 0 :(得分:1)

awk '/^>/ {
   name=substr($0,2);
   getline;
   printf("%s - %d\n", name, length($1))
}' input_file

答案 1 :(得分:0)

你可以这样做:

 awk '/^>/ { res=substr($0, 2); } /^[^>]/ { print res " - " length($0); }' < file

答案 2 :(得分:0)

使用{ ... }自动读取每个奇数行,使用getline偶数行读取蛋白质:

awk ' {
    getline prot;
    printf "%s - %d\n", substr( $0, 2 ), length( prot ) 
}' infile

输出:

1GS9 - 12
1LE2 - 9
1NFN - 7

答案 3 :(得分:0)

awk '{line=substr($0,2);getline;print line,"-",length($0)}' temp

测试如下:

> cat temp
>1GS9
PYCPAAVIAPVV
>1LE2
DFEFAKWKN
>1NFN
ADAPPDS
> awk '{line=substr($0,2);getline;print line,"-",length($0)}' temp
1GS9 - 12
1LE2 - 9
1NFN - 7
> 

答案 4 :(得分:0)

这可能适合你(GNU awk):

awk -vRS='>' -vOFS=' - ' 'NR>1{print $1,length($2)}' file