如何在起始行数中添加字母?

时间:2014-06-16 12:20:08

标签: python linux shell awk

我有一个像这样的PDB文件:

ATOM    954  N   ASP     1      97.850  62.880  40.170  1.00  0.00            
ATOM    955  H1  ASP     1      98.220  63.100  39.260  1.00  0.00            
ATOM    956  H2  ASP     1      97.790  63.720  40.710  1.00  0.00            
ATOM    957  H3  ASP     1      98.460  62.200  40.580  1.00  0.00            
ATOM    958  CA  ASP     1      96.560  62.200  40.040  1.00  0.00            
ATOM    959  CB  ASP     1      95.890  62.050  41.400  1.00  0.00            
ATOM    960  CG  ASP     1      96.590  60.930  42.180  1.00  0.00            
ATOM    961  OD1 ASP     1      97.470  61.280  42.990  1.00  0.00            
ATOM    962  OD2 ASP     1      96.160  59.770  42.060  1.00  0.00            
ATOM    963  C   ASP     1      95.660  62.960  39.060  1.00  0.00            
ATOM    964  O   ASP     1      95.660  64.190  39.190  1.00  0.00            
ATOM    965  N   VAL     2      94.670  62.290  38.480  1.00  0.00            
ATOM    966  H   VAL     2      94.490  61.350  38.770  1.00  0.00
ATOM    967  CA  VAL     2      93.820  62.870  37.430  1.00  0.00            
ATOM    968  CB  VAL     2      93.500  61.690  36.500  1.00  0.00            
ATOM    969  CG1 VAL     2      92.540  62.050  35.360  1.00  0.00            
ATOM    970  CG2 VAL     2      94.710  60.950  35.930  1.00  0.00            
ATOM    971  C   VAL     2      92.540  63.390  38.080  1.00  0.00            
ATOM    972  O   VAL     2      91.980  62.790  39.000  1.00  0.00            
ATOM    973  N   GLN     3      92.410  64.690  37.830  1.00  0.00            
ATOM    974  H   GLN     3      93.140  65.240  37.410  1.00  0.00            
ATOM    975  CA  GLN     3      91.290  65.510  38.310  1.00  0.00                    

在第4栏(氨基酸代码)我想添加字母" H"到972原子数。任何一个kinldy可以解释我如何做到这一点。

预期结果:

ATOM    954  N   ASP H    1      97.850  62.880  40.170  1.00  0.00            
ATOM    955  H1  ASP H   1      98.220  63.100  39.260  1.00  0.00            
ATOM    956  H2  ASP H   1      97.790  63.720  40.710  1.00  0.00            
ATOM    957  H3  ASP H   1      98.460  62.200  40.580  1.00  0.00            
ATOM    958  CA  ASP H   1      96.560  62.200  40.040  1.00  0.00            
ATOM    959  CB  ASP H   1      95.890  62.050  41.400  1.00  0.00            
ATOM    960  CG  ASP H   1      96.590  60.930  42.180  1.00  0.00            
ATOM    961  OD1 ASP H    1      97.470  61.280  42.990  1.00  0.00            
ATOM    962  OD2 ASP H    1      96.160  59.770  42.060  1.00  0.00            
ATOM    963  C   ASP H    1      95.660  62.960  39.060  1.00  0.00            
ATOM    964  O   ASP H    1      95.660  64.190  39.190  1.00  0.00            
ATOM    965  N   VAL H    2      94.670  62.290  38.480  1.00  0.00            
ATOM    966  H   VAL H    2      94.490  61.350  38.770  1.00  0.00
ATOM    967  CA  VAL H    2      93.820  62.870  37.430  1.00  0.00            
ATOM    968  CB  VAL H    2      93.500  61.690  36.500  1.00  0.00            
ATOM    969  CG1 VAL H   2      92.540  62.050  35.360  1.00  0.00            
ATOM    970  CG2 VAL H   2      94.710  60.950  35.930  1.00  0.00            
ATOM    971  C   VAL H    2      92.540  63.390  38.080  1.00  0.00            
ATOM    972  O   VAL H   2      91.980  62.790  39.000  1.00  0.00 

2 个答案:

答案 0 :(得分:1)

这个awk可以成功:

awk '$2<=972 {$4=$4 FS "H"} 1' file

每当第二列为<= 972时,请在第4列之后附加H

答案 1 :(得分:0)

你也可以尝试这个GNU sed命令,

sed -nr '1,/ 972 /p' file | sed -r 's/^(.*) +([0-9] +.*)$/\1H  \2/g'