2013-03-06 77 views
0

我有一個PDB文件中使用grep的,總之它看起來有點像這樣在PDB文件

ATOM 1189 CA ILE A 172  4.067 0.764 -48.818 1.00 19.53   C 
ATOM 1197 CA ATHR A 173  7.121 3.051 -48.711 0.50 17.77   C 
ATOM 1198 CA BTHR A 173  7.198 2.978 -48.704 0.50 16.94   C 
ATOM 1208 CA ALA A 174  7.797 2.124 -52.350 1.00 16.85   C 
ATOM 1213 CA LEU A 175  4.431 3.707 -53.288 1.00 16.47   C 
ATOM 1221 CA VAL A 176  4.498 6.885 -51.185 1.00 13.92   C 
ATOM 1228 CA ARG A 177  6.418 10.059 -51.947 1.00 20.28   C 
ATOM 1241 CA GLN B 23  -15.516 -2.515 13.305 1.00 32.36   C 
ATOM 1250 CA ASP B 24  -12.740 -2.653 10.715 1.00 22.25   C 
ATOM 1258 CA PHE B 25  -12.476 -2.459 6.886 1.00 19.17   C 
ATOM 1269 CA TYR B 26  -12.886 -6.243 6.470 1.00 14.87   C 
ATOM 1281 CA ASP B 27  -16.276 -6.196 8.222 1.00 18.01   C 
ATOM 1289 CA PHE B 28  -17.998 -4.432 5.309 1.00 15.39   C 
ATOM 1300 CA LYS B 29  -19.636 -5.878 2.191 1.00 14.46   C 
ATOM 1309 CA ALA B 30  -19.587 -4.640 -1.378 1.00 15.26   C 
ATOM 1314 CA VAL B 31  -21.000 -5.566 -4.753 1.00 16.26   C 

我想要走的是擺脫了B的,並保持了A的,然後得到擺脫一切,但第6行

grep ^ATOM 2p31protein.pdb | grep ' CA ' | grep ' A ' | cut -c23-27 

這是我曾經嘗試過,得到與ATOM和CA的一切,我我想要的,得到我想要的行,但它並沒有擺脫B的

+0

'A'是'ATOM'所以'grep的A'是不會消除的'B'行工作。查看如何進行字段比較的答案。 – 2013-03-06 13:34:38

+0

@sudo_O他有'grep'A''所以它會好的。我猜他需要報價'^ ATOM' – Kent 2013-03-06 13:45:11

+0

@肯特該死的空白'8)'你說得對。 OP解決方案的工作,但'awk'是這裏最好的工具。 – 2013-03-06 13:46:44

回答

1

這是更適合awk

$ awk '$1=="ATOM"&&$3=="CA"&&$5=="A"{print $6}' file 
172 
173 
173 
174 
175 
176 
177 
0

用awk你可以做得更容易:

awk '$1=="ATOM" && $3=="CA" && $5=="A"{print $6}' your.pdb