Replace sed将列中的字符替换为空格,但重新指定格式
我有一个文件a.pdb作为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
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