【发布时间】:2013-07-18 03:33:21
【问题描述】:
再次提出一些问题。我有一个格式的文件:
>seq1
123 234 56
167 332 22
23 456 098
>seq2
123 234 56
167 332 22
23 456 098
我想要一个文件保存每个>seq#,像这样:
文件 1:
>seq1
123 234 56
167 332 22
23 456 098
文件 2:
>seq2
123 234 56
167 332 22
23 456 098
我可以使用 perl 脚本,但想知道如何使用 perl 单行程序来完成,只是为了增加我的 perl 知识。
谢谢!!
【问题讨论】:
-
你知道有很多生物模块,对吧? search.cpan.org
-
是的,我知道,但我还是想试试单线就知道了。这些不是 fasta 文件,而是实际的数字表。
-
除非有一个模块对此提供支持,否则您可能会发现它太大而不能成为一个理智的单线。我 99% 确定我会使用十几行来完成这项任务。您可以通过使用
>seq1行作为open的两个参数形式的参数来稍微作弊,但这只是一个小问题。很大程度上取决于您希望代码有多健壮。 -
@JonathanLeffler 实际上,如果您使用
$/ = "\n>",您可能很容易做到。perl -lwe'$/="\n>"; while (<>) { open my $fh, ">", "file" . ++$i . ".txt" or die $!; print $fh $_; }' seq.txt -
嗯...不,这不太行,我现在明白了,好吧,也许可以调整一下。