作者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