我有以下数据,包括带有双列的制表符分隔数据,尽管前三列不是每个双联的一部分:
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执行此操作?
答案 0 :(得分: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";
}