【发布时间】:2021-08-16 11:33:33
【问题描述】:
我有一个像这样的 Newick/Phylip 格式文件
(Chicken:0.247775,
Mouse:0.091619,
(GuineaPig:0.174006,
((OwlMonkey:0.069823,
((Chimp:0.009091,
Human:0.009091):0.025108,
GreenMonkey:0.018831):0.015025):0.029561,
((Sheep:0.087386,
Pig:0.039886):0.022893,
Dog:0.068016):0.005950):0.023011):0.006297);
我需要将分支 Dog 标记为 Dog:0.068016#Del
(Chicken:0.247775,
Mouse:0.091619,
(GuineaPig:0.174006,
((OwlMonkey:0.069823,
((Chimp:0.009091,
Human:0.009091):0.025108,
GreenMonkey:0.018831):0.015025):0.029561,
((Sheep:0.087386,
Pig:0.039886):0.022893,
Dog:0.068016#Del):0.005950):0.023011):0.006297);
这可以通过sed 's/Dog:0.068016/Dog:0.068016#Del/g'轻松完成
但是我有多个具有不同值的文件,并且还必须对其他动物进行多次更改,所以我尝试了以下方式
sed '/'Dog'/s/Dog/#Del/'
但它没有奏效。有什么建议吗?
【问题讨论】:
-
请不要使用块引用格式化您的数据样本,而是使用代码块来保留换行符。
-
为什么
sed '/'Dog'/s/Dog/#Del/'中有这么多单引号?你写道你“有多个具有不同值的文件,并且还必须对其他动物进行多次更改”但你只尝试了Dog和#Del你能解释一下吗更好一点你想做什么?你在哪里指定什么动物,什么值,什么文件等等? -
我可以把这段代码放到循环中,例如:cat list |同时读取 r;做 sed '/'$r'/s/$r/#Del/' >$r.out;完成
-
请编辑您的问题以在问题本身中添加缺失的信息,以便对其他人也有用。请尽量与您接受的答案保持一致。例如,您的最后一条评论不是:您想从文件中还是从命令行中获取动物名称?您想要每只动物一个结果文件还是只需要一个结果文件?