从一个看起来像这样的文件:
(AJirio:0.00230,(AJama.1.1:0.00171,(AJkago.1:0.00057,AJtok:0.00033)1.00:0.00080)0.94:0.00085,Atab.1.1.1:0.27697);
我需要获取这个文件:
AJirio"AJirio" AJama.1.1"AJama" AJkago.1"AJkago" AJtok"AJtok" Atab.1.1.1"Atab"
因此,基本上提取系统发育树中 DNA 序列的名称,并在其中添加带引号的物种名称(AJirio、AJkama..)。
答案1
两种方法:
Awk
方法:
awk -v RS=',' -F':' '{
sub(/\(*/, ""); dna = $1;
gsub(/[^a-zA-Z]/, "", $1);
printf "%s\042%s\042\n", dna, $1
}' file
sed
方法:
sed -En 's/\(*?(([a-zA-Z]+)[^:]*):[^,]+/\1"\2"/g; s/,/\n/gp' file
输出:
AJirio"AJirio"
AJama.1.1"AJama"
AJkago.1"AJkago"
AJtok"AJtok"
Atab.1.1.1"Atab"