Awk 在pdb文件中使用grep

Awk 在pdb文件中使用grep,awk,grep,Awk,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

我有一个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,然后去掉除了第六排以外的所有东西

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

这就是我尝试过的,使用ATOM和CA获得我想要的一切,并获得我想要的行,但它无法消除B的问题。使用awk,您可以更轻松地做到:

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

这更适合于
awk

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

A
位于
ATOM
中,因此
grep A
无法消除
B
行。查看关于如何进行字段比较的答案。@sudo\O他有
grep'A'
,这样就可以了。我想他需要引用
^ATOM
@Kent该死的空格
8)
你说得对。OP解决方案可行,但awk是这里最好的工具。