【发布时间】:2019-04-10 09:13:45
【问题描述】:
我有一个像这样的.csv 文件。
atomnum,atominfo,metric
238,A-30-CYS-SG,53.7723
889,A-115-CYS-SG,46.2914
724,A-94-CYS-SG,44.6405
48,A-6-CYS-SG,37.2108
630,A-80-CYS-SG,29.574
513,A-64-CYS-SG,23.1925
981,A-127-CYS-SG,19.8903
325,A-41-GLN-OE1,17.6205
601,A-76-CYS-SG,17.5079
我想这样改:
atomnum,atominfo,metric
238,C30-SG,53.7723
889,C115-SG,46.2914
724,C94-SG,44.6405
48,C6-SG,37.2108
630,C80-SG,29.574
513,C64-SG,23.1925
981,C127-SG,19.8903
325,Q41-OE1,17.6205
601,C76-SG,17.5079
逗号之间的部分是原子标识符:其中 A-30-CYS-SG 是 A 链中残基 30 的 γ 硫,它是一个半胱氨酸。残基可以用三个字母或一个 (表在这里https://www.iupac.org/publications/pac-2007/1972/pdf/3104x0639.pdf)。基本上,我只想a)将三个字母代码更改为一个字母代码,b)删除链ID(在本例中为A)和c)将残基编号放在一个字母代码旁边。
我已经尝试匹配 vim 中逗号之间的模式。像s%:\(-\d\+\-\)\(\u\+\):\2\1:g 这样的东西给了我c),即(ACYS-30--SG)。我不知道怎么做 a) 用 vim。我知道如何使用 sed 和一个包含所有替代命令的输入文件来做到这一点。但是,使用 sed 完成所有工作可能会更好......我在问是否有可能在 vim 上做 a)?
谢谢
【问题讨论】:
-
如果你不描述具体的变化是什么,人们不得不根据输入和输出进行猜测。此外,如果您展示您的尝试以及失败的原因,您的问题可能会更好地被接受。