使用 awk 替换列而不更改格式

使用 awk 替换列而不更改格式

我有一个 PDB 文件(见下文),我需要将第 5 列中的 A 更改为 B,并且我需要在不更改原始文件格式的情况下更改它。我可以使用以下 awk 命令将 A 更改为 B:

$ awk '{sub(/A/,"B",$5); print;}' file 1 > file 2

ATOM      1  N   GLY A 302      77.282 -99.685 -10.078  1.00  0.00        N
ATOM      2  CA  GLY A 302      78.728 -99.868 -10.031  1.00  0.00        C
ATOM      3  C   GLY A 302      79.457 -98.600 -10.458  1.00  0.00        C
ATOM      4  O   GLY A 302      80.646 -98.435 -10.185  1.00  0.00        O

答案1

awk '{if ($5 == "A") gsub(/A/,"B",$5)}1' file > new_file

答案2

我经常使用 PDB 文件。我认为在 Vim 中打开文件会更容易,然后执行:%s/ A / B /g

相关内容