[問題] 合併三個檔案中的資料
FILE1:
name1,chrA1
name2,chrA2
name3,chrA3
...
FILE2:
name1,chrB1
name2,chrB2
name3,chrB3
...
FILE3:
name1,chrC1
name2,chrC2
name3,chrC3
...
要將output變成:
name1,chrA1,chrB1,chrC1
name2,chrA2,chrB2,chrC2
name3,chrA3,chrB3,chrC3
...
每個file都有20萬筆
我現在是用while(
while(
while(
)
)
)
的方式比對,很沒效率而且會out of memory XD
並附加error "Use of uninitialized value $Name1 in string"
請教板大們有沒有比較好的方法呢?
謝謝板大:)
附上我的script:
##!/usr/bin/perl
use strict;
use warnings;
my $file1 = "A.txt";
open FILE1, $file1 or die "File open error!!";
my $fileOUT = ">OUTPUT.txt";
open FILE0, $fileOUT or die "File open error!!";
while(<FILE1>){
chomp($_);
my $Line1 = $_;
if($Line1 =~ /(.+?),(.+)/){
my $Name1 = $1;
my $CHR1 = $2;
my $file2 = "B.txt";
open FILE2, $file2 or die "File open error!!";
while(<FILE2>){
chomp($_);
my $Line2 = $_;
if($Line2 =~ /(.+?),(.+)/){
my $Name2 = $1;
my $CHR2 = $2;
if($Name1 eq $Name2){
my $file3 = "C.txt";
open FILE3, $file3 or die "File open error!!";
while(<FILE3>){
chomp($_);
my $Line3 = $_;
if($Line3 =~ /(.+?),(.+)/){
my $Name3 = $1;
my $CHR3 = $2;
if($Name1 eq $Name3){
print FILE0 "$Name3,$CHR1,$CHR2,$CHR3\n";
}
}
}
}
}
}
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.197.110
※ 編輯: adu 來自: 140.113.197.110 (05/04 00:49)
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 3 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章