2012-08-25 26 views
2

我想從DSSP文件中提取螺旋(H)殘基。用awk從DSSP中提取螺旋殘基

1CRN.dssp

31 37 A K H < S+ 
32 38 A V H < S+ 
33 39 A F H >< S- 
34 40 A G G >< S+ 
35 41 A K G > S+ 

1GB5.dssp

113 242 B G H 3>>S+ 
114 243 B I H <45S+  
115 244 B L H X45S+  
116 245 B S H 3<5S+ 
117 246 B K T >X5S+ 

我想保存在以下格式的輸出。

>1CRN 
KVF 
>1GB5 
GILS 

我該怎麼用awk做到這一點?您的建議將不勝感激!

回答

5

第5列中的'H'表示「螺旋(H)殘基」?

awk '{ 
    if (FNR == 1) print ">" FILENAME 
    if ($5 == "H") { 
    printf $4 
    } 
} 
END { printf "\n"}' file 

輸出

>tstDat.txt 
KVF 

IHTH

+0

比你這麼多! – user1614417

+0

'if'子句可以是兩個獨立塊的條件,例如:'FNR == 1 {print「>」FILENAME}「等。 – Thor

+1

@Thor:是的,同意。我知道(並且親自使用)idomatic awk塊,但我認爲對於不懂awk的人來說,隱含的while循環(在每個記錄上)足以接受第一個解決方案。祝你們好運。 – shellter