0

タンパク質配列を含むテキストファイルがあります。各シーケンスの残基の総数を取得したいと思います。どうすればawkでこれを行うことができますか?

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

必要な出力

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

5 に答える 5

1
awk '/^>/ {
   name=substr($0,2);
   getline;
   printf("%s - %d\n", name, length($1))
}' input_file
于 2012-08-14T10:16:00.167 に答える
0

あなたはこれを行うことができます:

 awk '/^>/ { res=substr($0, 2); } /^[^>]/ { print res " - " length($0); }' < file
于 2012-08-14T10:14:18.650 に答える
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
> 
于 2012-08-14T10:40:33.393 に答える
0

これはうまくいくかもしれません(GNU awk):

awk -vRS='>' -vOFS=' - ' 'NR>1{print $1,length($2)}' file
于 2012-08-14T14:18:14.707 に答える
0

すべての奇数行を自動的に読み取り、偶数行{ ... }のタンパク質を次のように読み取りますgetline

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

出力:

1GS9 - 12
1LE2 - 9
1NFN - 7
于 2012-08-14T10:28:03.160 に答える