У меня есть файл .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 - гамма-сера остатка 30, представляющего собой цистеин, в цепи А. Остатки могут быть представлены тремя буквами или только одной ( Таблица здесь https://www.iupac.org/publications/pac-2007/1972/pdf/3104x0639.pdf). По сути, я просто хочу: а) изменить трехбуквенный код на однобуквенный код, б) удалить идентификатор цепи (в данном случае А) и в) поставить номер остатка рядом с одним буквенный код.
Я попытался сопоставить шаблоны между запятыми в vim. Что-то вроде s%:\(-\d\+\-\)\(\u\+\):\2\1:g
дает мне в) то есть (ACYS-30--SG
). Я не знаю, как это сделать а) с vim. Я знаю, как это сделать с помощью sed и входного файла со всеми командами замены. Но тогда, может быть, лучше сделать всю работу с помощью sed ... Я спрашиваю, возможно ли сделать a) на vim?
Спасибо