以特定格式“ newik” sed

时间:2019-03-22 08:05:38

标签: bash sed

我需要一些帮助来处理特殊格式并将sed应用于其中;

我正在谈论的格式如下:

((scaffold_123_150948-152847_+__Ra_raccoon:19.19959,chrm_189_150948-152847_+__Ra_bear:6.80041):0.84600,((chrm_143_150948-152847_+__sea_lion:11.99700, chrm_121_150948-152847_+__Ra_seal:12.00300):7.52973,((scaff14344788_150948-152847_+__Ra_monkey:100.85930,chrm_23_150948-152847_+__Ra_cat:47.14069):20.59201, scaff145788_150948-152847_+__Ra_weasel:18.87953):2.09460):3.87382,chrm_145_150948-152847_+__Ra_dog:25.46154);

它是一种newik格式,在数学上,Newick树格式是一种使用括号和逗号来表示具有边长的图论树的方法。

这里有8 species_names :(节点名称):

scaffold_123_150948-152847_+__Ra_raccoon
chrm_189_150948-152847_+__Ra_bear
chrm_143_150948-152847_+__sea_lion
chrm_121_150948-152847_+__Ra_seal
scaff14344788_150948-152847_+__Ra_monkey
chrm_23_150948-152847_+__Ra_cat
scaff145788_150948-152847_+__Ra_weasel
chrm_145_150948-152847_+__Ra_dog

的想法是将它们转换为newik格式:

Ra_raccoon
Ra_bear
sea_lion
Ra_seal
Ra_monkey
Ra_cat
Ra_weasel
Ra_dog

并获取:

((Ra_raccoon:19.19959,Ra_bear:6.80041):0.84600,((sea_lion:11.99700, Ra_seal:12.00300):7.52973,((Ra_monkey:100.85930,Ra_cat:47.14069):20.59201, Ra_weasel:18.87953):2.09460):3.87382,Ra_dog:25.46154);

我知道,如果我独立获取所有节点名称,则命令sed -i 's/^.*__/>/'可以做到,但是这里以newik格式有点复杂。.

有人有想法吗? 谢谢你的帮助。

0 个答案:

没有答案