我必须解析一个看起来像这样的 UniProt 文件:
ID 001R_FRG3G Reviewed; 256 AA.
AC ERPL_ADA;
OS Frog virus 3 (isolate Goorha) (FV-3).
ID 002L_FRG3G Reviewed; 320 AA.
AC Q6GZX3;
OS Frog virus 3 (isolate Goorha) (FV-3 / ADD / PERM /
OS strain HB).
等等。
我想检索所有操作系统标识符(物种),但情况是其中一些具有唯一的操作系统,而另一些则在连续行中重复了操作系统,我应该将它们连接起来。
这样输出将是:
OS Frog virus 3 (isolate Goorha) (FV-3).
OS Frog virus 3 (isolate Goorha) (FV-3 / ADD / PERM / strain HB).
对于一个操作系统事件,我可以使用正则表达式选择该行,例如:
while ($line=<IN>){
chomp $line;
if ($line=~ /^OS\s{3}/ and $line=~ /\.$/){
$os= $line;
}
}
但是当你有两个连续的操作系统时怎么办?我一直在尝试添加下一个,但我无法找到解决方案。