使用条件保持 pdb 文件的格式

Keeping format of a pdb file with conditionals

我是 awk 的新手,如果第 1 列有单词 HETATM,我正在尝试修改第 3 列(关于 NR 的编号)。

我的输入文件是:

HETATM   25  O   UNL     1      86.047  83.059 103.165  1.00  0.00           O
HETATM   26  N   UNL     1      87.071  82.457 102.433  1.00  0.00           N
HETATM   27  C   UNL     1      91.764  77.729  97.523  1.00  0.00           C
HETATM   28  O   UNL     1      92.740  78.174  98.137  1.00  0.00           O
HETATM   29  H   UNL     1      90.477  80.552  97.677  1.00  0.00           H
CONECT    1    2
CONECT    2    1    3
CONECT    3    2    4    7

我想要的输出是:

HETATM   25  O25   UNL     1      86.047  83.059 103.165  1.00  0.00           O
HETATM   26  N26   UNL     1      87.071  82.457 102.433  1.00  0.00           N
HETATM   27  C27   UNL     1      91.764  77.729  97.523  1.00  0.00           C
HETATM   28  O28   UNL     1      92.740  78.174  98.137  1.00  0.00           O
HETATM   29  H29   UNL     1      90.477  80.552  97.677  1.00  0.00           H
CONECT    1    2
CONECT    2    1    3
CONECT    3    2    4    7

我正在使用此命令来维护文件的格式,但我做不到。你能帮帮我吗?

awk 'BEGIN{FS=OFS="\t";}{if(=="HETATM"){=NR};print [=12=]}' file.pdb

非常感谢。

使用任何 sed:

$ sed 's/^HETATM *\([^ ]*\) *[^ ]*/&/' file
HETATM   25  O25   UNL     1      86.047  83.059 103.165  1.00  0.00           O
HETATM   26  N26   UNL     1      87.071  82.457 102.433  1.00  0.00           N
HETATM   27  C27   UNL     1      91.764  77.729  97.523  1.00  0.00           C
HETATM   28  O28   UNL     1      92.740  78.174  98.137  1.00  0.00           O
HETATM   29  H29   UNL     1      90.477  80.552  97.677  1.00  0.00           H
CONECT    1    2
CONECT    2    1    3
CONECT    3    2    4    7

原回答:

假设您的输入确实如您在脚本中所指示的那样以制表符分隔,那么您非常非常接近:

$ awk 'BEGIN{FS=OFS="\t"} =="HETATM"{= } 1' file
HETATM  25      O25     UNL     1       86.047  83.059  103.165 1.00    0.00    O
HETATM  26      N26     UNL     1       87.071  82.457  102.433 1.00    0.00    N
HETATM  27      C27     UNL     1       91.764  77.729  97.523  1.00    0.00    C
HETATM  28      O28     UNL     1       92.740  78.174  98.137  1.00    0.00    O
HETATM  29      H29     UNL     1       90.477  80.552  97.677  1.00    0.00    H
CONECT  1       2
CONECT  2       1       3
CONECT  3       2       4       7