【发布时间】:2024-01-14 12:29:02
【问题描述】:
我有以下格式的文件:
ATOM 3736 CB THR A 486 -6.552 153.891 -7.922 1.00115.15 C
ATOM 3737 OG1 THR A 486 -6.756 154.842 -6.866 1.00114.94 O
ATOM 3738 CG2 THR A 486 -7.867 153.727 -8.636 1.00115.11 C
ATOM 3739 OXT THR A 486 -4.978 151.257 -9.140 1.00115.13 O
HETATM10351 C1 NAG A 203 33.671 87.279 39.456 0.50 90.22 C
HETATM10483 C1 NAG A 702 28.025 104.269 -27.569 0.50 92.75 C
ATOM 3736 CB THR B 486 -6.552 86.240 7.922 1.00115.15 C
ATOM 3737 OG1 THR B 486 -6.756 85.289 6.866 1.00114.94 O
ATOM 3738 CG2 THR B 486 -7.867 86.404 8.636 1.00115.11 C
ATOM 3739 OXT THR B 486 -4.978 88.874 9.140 1.00115.13 O
HETATM10351 C1 NAG B 203 33.671 152.852 -39.456 0.50 90.22 C
HETATM10639 C2 FUC B 402 -48.168 162.221 -22.404 0.50103.03 C
我想在以 HETATM* 开头的每一行之后拆分文件,但前提是下一行以 ATOM 开头。我希望将新文件命名为 $basename_$column,其中 $basename 是输入文件的基本名称,$column 是位置 22-23 的字符(在示例中为 A 或 B)。我无法弄清楚如何检查两条连续的线以确定分割点。
【问题讨论】:
-
在 awk 中,您可以使用
next和print ... > filename来完成任务。使用全局变量查看 previous 行。 -
Python 脚本适合你吗?
-
当然。最初,我想避免使用任何外部脚本。但是由于解析数据时遇到了许多异常,这比预期花费的时间更长。这是我第一次认真尝试编码,几天之内我已经写了 500 行......我现在需要的是无论如何尽快完成工作。