我需要在我的文件的标题行中搜索一个模式,并用 Perl 连接下一行 [英] I need search a pattern in a header line of my file and concatenates the next line with Perl

查看:82
本文介绍了我需要在我的文件的标题行中搜索一个模式,并用 Perl 连接下一行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的 multi-fasta 存档格式如下:

My multi-fasta archive is in this format:

>miRNA65 dvex2345
CGATGCTAGATGCTATGACAACGATGCCTCG-G
>miRNA60 dvex1234
T-TAA-ACTCATCATCATCATACTCATCATCATCATCAGCATATTAACAAG
>miRNA65 dvex2345
T-TAA-ACTTATCATCATCATACTCATCATCATCATCAGCATATTAACAAG

我是 Perl 新手,我需要搜索等于> 行"并连接下一行以加入序列.

I am new in Perl and I need to search the equals '> lines' and concatenate the next line to join the sequence.

我期待上述文件的以下输出:

I'm expecting the following output for the above file:

>miRNA60 dvex1234
T-TAA-ACTCATCATCATCATACTCATCATCATCATCAGCATATTAACAAG
>miRNA65 dvex2345
T-TAA-ACTTATCATCATCATACTCATCATCATCATCAGCATATTAACAAG.CGATGCTAGATGCTATGACAACGATGCCTCG-G

完成这项工作的最佳方法是什么?

What is the best way to get this done?

推荐答案

%hash;
while (<DATA>) {
        if (/^>(miRNA\d+)/) {
                $hash{$1}[0] = $_;
                chomp($n = <DATA>);
                unshift @{$hash{$1}[1]}, $n;
        }
}

for $k (sort keys %hash) {
        print $hash{$k}[0], join(',', @{$hash{$k}[1]}), "\n";
}
__DATA__
>miRNA65 dvex2345
CGATGCTAGATGCTATGACAACGATGCCTCG-G
>miRNA60 dvex1234
T-TAA-ACTCATCATCATCATACTCATCATCATCATCAGCATATTAACAAG
>miRNA65 dvex2345
T-TAA-ACTTATCATCATCATACTCATCATCATCATCAGCATATTAACAAG

这篇关于我需要在我的文件的标题行中搜索一个模式,并用 Perl 连接下一行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆