作者handsomegirl (薰)
看板Perl
標題Re: [問題] 資料長度
時間Mon Jan 21 14:59:34 2008
※ 引述《handsomegirl (薰)》之銘言:
: 目前遇到的問題,拿兩個檔案比對,第一欄位相同的話
: 就把第二個檔案的內容接在第一個檔案後面,但不包含比對的欄位
: ex:
: 1.txt----- e890a A.00 23 35
: 2.txt----- e890a 345 123
: print f $line." ".$array[1]." ".$array[2],"\n";
: (這是簡略的寫法~但是我的array事實上有30多個@@)
: 然後寫進新檔案
: 3.txt----- e890a A.00 23 35 345 123
: 把資料寫進新檔案的時候
: 由於資料量太長
: 導致他不理會我的跳行符號"\n"
: 所有的資料都連在一起
: 但是資料也不能拆成兩段去寫入
: 因為之後要再放到excel去畫圖
: 請教各位高手有什麼解決的方法嗎?
: 謝謝指教
放上程式片段
open(file1,"<1.txt");
while($line1=<file1>){
chomp $line1;
@array=split/\s+/,$line1;
open(file2,"<2.txt");
while($line2=<file2>){
@array2=split/\s+/,$line2;
if ($array[0]=~/$array2[0]/){
open f,">>3.txt";
print f $line1." ".$array2[1]." ".$array2[2]." ".$array2[3]." ".$array2[4]." ".
$array2[5]." ".$array2[6]." ".$array2[7]." ".$array2[8]." ".$array2[9]." ".
$array[10]." ".$array2[11]." ".$array2[12]." ".$array2[13]." ".$array2[14]." ".
$array2[25]." ".$array2[26]." ".$array2[27]." ".$array2[28]." ".$array2[29]." ".
$array2[30]." ".$array2[31]." ".$array2[32],"\n";
上面黃色部份是一行~為了閱讀方便我拆開來,陣列的1-32元素
}
}
close file2 ;
}
close file1;
close ff;
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.65.55.161
1F:推 Evenni:你的 file2 開檔後沒有後 chomp 01/21 15:49
2F:→ Evenni:另外妳的程式有一個效率的問題,妳有兩層的while 01/21 15:51
3F:→ Evenni:第二層裡面妳是用開檔的方式使用file2,如果你的file1有 01/21 15:52
4F:→ Evenni:10000行,那你的file2就必須開檔10000次..這樣效率會很差 01/21 15:53
5F:→ Evenni:如果要使用這樣雙層的方式,至少在迴圈之前把檔案都寫入陣列 01/21 15:53
6F:推 Evenni:第一行推文有錯字... 是開檔後沒有做 chomp 01/21 15:56