Replace sed将列中的字符替换为空格,但重新指定格式

Replace sed将列中的字符替换为空格,但重新指定格式,replace,sed,awk,space,Replace,Sed,Awk,Space,我有一个文件a.pdb作为 ATOM 3201 CD2 LEU A 337 7.734 18.538 6.979 0.00 0.00 0.000 C ATOM 3202 C LEU A 337 5.169 14.358 7.663 0.00 0.00 0.206 C ATOM 3203 O LEU A 337 4.123 14.537 8.395 0.00 0.00 -0.646

我有一个文件a.pdb作为

ATOM   3201  CD2 LEU A 337       7.734  18.538   6.979  0.00  0.00     0.000 C 
ATOM   3202  C   LEU A 337       5.169  14.358   7.663  0.00  0.00     0.206 C 
ATOM   3203  O   LEU A 337       4.123  14.537   8.395  0.00  0.00    -0.646 OA
ATOM   3204  OXT LEU A 337       5.124  13.563   6.672  0.00  0.00    -0.646 OA
HETATM 3206  CA  CA  A 338      18.241  31.994  15.308  0.00  0.00     0.000 CA 
HETATM 3207  CA  CA  A 339      16.703  30.240  22.272  0.00  0.00     0.000 CA 
期望输出:

ATOM   3201  CD2 LEU   337       7.735  18.538   6.979  0.00  0.00     0.000 C 
ATOM   3202  C   LEU   337       5.169  14.358   7.663  0.00  0.00     0.206 C 
ATOM   3203  O   LEU   337       4.122  14.537   8.395  0.00  0.00    -0.646 OA
ATOM   3204  OXT LEU   337       5.124  13.562   6.671  0.00  0.00    -0.646 OA
HETATM 3206  CA  CA    338      18.242  31.994  15.307  0.00  0.00     0.000 CA
HETATM 3207  CA  CA    339      16.703  30.240  22.272  0.00  0.00     0.000 CA

如何用空格替换第22列或第5块中的字母“A”,但保留A.pdb的格式?

您可以使用
awk
中的
gsub
执行此操作

awk '{gsub("A"," ",$5); print}' a.pdb

(.{21})
匹配21个字符并将它们放入捕获组1,然后在替换中使用该组。

使用
awk

awk '$0=substr($0,1,21) FS substr($0,23)' file

但是awk并没有保留这种格式。我失去了街区之间的距离。啊!你想让它们像以前一样对齐吗?我已经看到@Barmar为你提供了一个更好的答案。。。
awk '$0=substr($0,1,21) FS substr($0,23)' file
$ awk '$0=substr($0,1,21) FS substr($0,23)' file
ATOM   3201  CD2 LEU   337       7.734  18.538   6.979  0.00  0.00     0.000 C 
ATOM   3202  C   LEU   337       5.169  14.358   7.663  0.00  0.00     0.206 C 
ATOM   3203  O   LEU   337       4.123  14.537   8.395  0.00  0.00    -0.646 OA
ATOM   3204  OXT LEU   337       5.124  13.563   6.672  0.00  0.00    -0.646 OA
HETATM 3206  CA  CA    338      18.241  31.994  15.308  0.00  0.00     0.000 CA 
HETATM 3207  CA  CA    339      16.703  30.240  22.272  0.00  0.00     0.000 CA