如何解决AWK替换列AFTER匹配的行
我有一个从受体/配体对接预测返回的PDB文件。我不知道为什么程序的作者将受体和配体的链都命名为“ A”,但是我想对其进行更改。这应该是我想做的基本事情,而且我不确定为什么在互联网上找不到任何示例。我想做的很简单。
- 匹配一行,例如“ HEADER lig”
- 然后在该行之后的每一行中,将$ 5列替换为“ B”
以下是输入文件的示例:
ATOM 9197 OG SER A1176 103.395 152.201 139.176 1.00 0.00 RA2 O
ATOM 9198 HG SER A1176 104.092 151.786 138.659 1.00 0.00 RA2 H
ATOM 9199 C SER A1176 101.857 153.749 136.254 1.00 0.00 RA2 C
ATOM 9200 O SER A1176 102.183 152.962 135.366 1.00 0.00 RA2 O
TER
HEADER lig.006.10.pdb
ATOM 1 N GLY A 25 182.812 181.892 153.587 1.00 0.00 LA0 N
ATOM 2 H GLY A 25 182.954 182.546 152.840 1.00 0.00 LA0 H
ATOM 3 CA GLY A 25 183.834 180.858 153.715 1.00 0.00 LA0 C
ATOM 4 C GLY A 25 184.544 180.646 152.391 1.00 0.00 LA0 C
ATOM 5 O GLY A 25 184.450 181.466 151.487 1.00 0.00 LA0 O
ATOM 6 N PRO A 26 185.249 179.494 152.297 1.00 0.00 LA0 N
ATOM 7 CD PRO A 26 185.371 178.458 153.319 1.00 0.00 LA0 C
我在下面尝试了此方法,但是它仅将匹配后的第一行的$ 5列替换。不确定为什么此示例中的任何地方都没有张贴任何内容。
awk '{ print; } /^HEADER lig/ { getline; $5="B"; print }' model.006.10.pdb
解决方法
awk '{ if (headerfound==1){ $5="B" }}/^HEADER/{ headerfound=1}{ print }' mode.pdb
三个部分:
-
headerfound==1
==>将“ B”设置为第5列 -
/^HEADER/
=>该行以标题开头吗? -
只是一个简单的打印即可打印(最终更改)行。
简短说明
第2部分,在检查^HEADER
之后检测headerfound==1
,因为找到HEADER时,当前行是包含文本HEADER的行,我们不想将“ B”分配给第五行该行的列。
在下一行,我们首先检查上一行是否包含HEADER(headerfound == 1),并更新$ 5。
,IIRC空格在这些“ PDB”文件中的字段之间很重要,因此这是一个保留空格的GNU awk解决方案:
$ awk 'f{$0=gensub(/((\S+\s+){4})\S+/,"\\1B",1)} /HEADER lig/{f=1} 1' file
ATOM 9197 OG SER A1176 103.395 152.201 139.176 1.00 0.00 RA2 O
ATOM 9198 HG SER A1176 104.092 151.786 138.659 1.00 0.00 RA2 H
ATOM 9199 C SER A1176 101.857 153.749 136.254 1.00 0.00 RA2 C
ATOM 9200 O SER A1176 102.183 152.962 135.366 1.00 0.00 RA2 O
TER
HEADER lig.006.10.pdb
ATOM 1 N GLY B 25 182.812 181.892 153.587 1.00 0.00 LA0 N
ATOM 2 H GLY B 25 182.954 182.546 152.840 1.00 0.00 LA0 H
ATOM 3 CA GLY B 25 183.834 180.858 153.715 1.00 0.00 LA0 C
ATOM 4 C GLY B 25 184.544 180.646 152.391 1.00 0.00 LA0 C
ATOM 5 O GLY B 25 184.450 181.466 151.487 1.00 0.00 LA0 O
ATOM 6 N PRO B 26 185.249 179.494 152.297 1.00 0.00 LA0 N
ATOM 7 CD PRO B 26 185.371 178.458 153.319 1.00 0.00 LA0 C
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。