- 论坛徽章:
- 0
|
大家好,请教一个问题!望大家指点迷津...1.前提:在一个目录下有N个文件(文件类型一致),且每一个文件中都有两列,格式如下:
假设这是第一个文件的内容:
ID value1
gene1 1
gene2 2
gene3 3
..
..
2.目的: 为了将这N个文件的内容根据相同ID(即第一列)合并在一起,最终格式是:
ID value1 value2 .......valueN
gene1 1 2 ...... 1
gene2 2 4 ...... 10
gene3 3 6 ...... 12
.. .. .. ...... ..
.. .. .. ...... ..
3.大体思路:是第一个文件和第二个文件比,第二个文件和第三个文件比,以此类推
for my $j(0 .. @files2-1){
if(-e "$files2[$j]"){
open my $input,$files2[$j] or (die "$!");
while(<$input>){
chomp;
my($id1,$value1)=split/\t/;
$hash{$id1}=$value1;
}
}
if(-e "$files2[$j+1]"){
open my $input2,$files2[$j+1] or (die "$!");
while(<$input2>){
chomp;
my($id2,$value2)=(split/\t/,$_);
if(exists ...){
print "$id2\t$hash{$id1}\t$value2\n"; 这个弊端就是只能得到两列
}
}
}
该如何才能得到在前一轮输出的列后面继续呢!
谢谢大家了!
|
|