我正在尝试找出一种方法来做到这一点,我知道这应该是可能的。先说一点背景。
我想自动化创建 NCBI Sequin 块以将 DNA 序列提交到 GenBank 的过程。我总是最终创建一个表格,其中列出了物种名称、标本 ID 值、序列类型,最后是集合的位置。我很容易将其导出到制表符分隔的文件中。现在我做这样的事情:
while ($csv) {
foreach ($_) {
if ($_ =! m/table|species|accession/i) {
@csv = split('\t', $csv);
print NEWFILE ">[species=$csv[0]] [molecule=DNA] [moltype=genomic] [country=$csv[2]] [spec-id=$csv[1]]\n";
}
else {
next;
}
}
}
我知道这很乱,我只是输入了一些类似于我记忆中的内容(在我家里的任何计算机上都没有脚本,只有在工作中)。
现在这对我来说很好,因为我知道我需要的信息(物种、位置和 ID 号)在哪些列中。
但是有没有办法(必须有)让我动态地找到所需信息的列?也就是说,无论列的顺序如何,来自正确列的正确信息都会出现在正确的位置?
第一行通常为表 X(其中 X 是出版物中表的编号),下一行通常有感兴趣的列标题,并且标题几乎是通用的。几乎所有表格都有标准标题可供搜索,我可以使用 | 在我的模式匹配中。