我需要一些帮助来处理特殊格式并将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格式有点复杂。.
有人有想法吗? 谢谢你的帮助。