0

我有以下数据,由制表符分隔的双列数据组成,尽管前三列不是每个双峰的一部分:

Name    Type    Pos HX-20_4218.txt.Geo A Position   HX-20_4218.txt.Geo B Position   HX-474_3712.txt.Geo A Position  HX-474_3712.txt.Geo B Position  HX-549_3943.txt.Geo A Position  HX-549_3943.txt.Geo B Position
A-2345252   1   5   0.3574  0.9796  0.3178  0.9641  0.5564  1.0000
A-1969580   1   7   -0.3777 1.0000  -0.6987 1.0000  0.1007  0.9696
....

我需要从中提取信息以提供以下制表符分隔的输出:

第一个文件:HX-20.txt

Name    Type    Pos HX-20_4218.txt.Geo A Position   HX-20_4218.txt.Geo B Position
A-2345252   1   5   0.3574  0.9796
A-1969580   1   7   -0.3777 1.0000
....

第二个文件:HX-474.txt

Name    Type    Pos HX-474_3712.txt.Geo A Position  HX-474_3712.txt.Geo B Position
A-2345252   1   5   0.3178  0.9641
A-1969580   1   7   -0.6987 1.0000
....

第三个文件:HX-549.txt

Name    Type    Pos HX-549_3943.txt.Geo A Position  HX-549_3943.txt.Geo B Position
A-2345252   1   5   0.5564  1.0000
A-1969580   1   7   0.1007  0.9696
....

我怎么能用 perl 做到这一点?

4

1 回答 1

0

我会做类似的事情:

open my $in, '<', $filein or die $!
open my $out1, '>', $fileout1 or die $!
open my $out2, '>', $fileout2 or die $!
open my $out3, '>', $fileout3 or die $!

while(<$in>) {
    chomp;
    my @cols = split(/\t/, $_);
    my $line1 = join("\t", (@cols)[0..4]);
    my $line2 = join("\t", (@cols)[0..2,5,6]);
    my $line3 = join("\t", (@cols)[0..2,7,8]);
    print $out1 $line1,"\n";
    print $out2 $line2,"\n";
    print $out3 $line3,"\n";
}
于 2013-11-05T12:49:29.993 回答