- 论坛徽章:
- 0
|
有两个文件,程序目的是替换A文件中的第一个字段的同时,替换B文件中的相同字段.
文件A:
a1|kajlkj|ksjlfk|skfjls|23
a2|ljkj|skjk|24234|33
......
文件B:
b1|llkl3|c1|lkll|k9ii|234223|a1|44
b2|klkll|a1|................|c1|sf.
b3|.....|d1|................|e1|
b4|.....|a2|................|d1|
b5|.....|d2|................|a2|
....
我的方法是:
- open(FHA1,"A");
- open(FHA2,">A.txt");
- open(FHB1,"B");
- open(FHB2,">B.txt");
- $data = 50000;
- while($lineA = <FHA1>){
- chomp $lineA;
- ($field1,$field2,$field3,$field4,$field5) = split(/\|/,$lineA,5);
- seek(FHB1,0,0);
- while($lineB = <FHB1>){
- chomp $lineB;
- ( $value1,$value2,$value3,$value4,$value5,$value6,$value7,$value8 ) = split( /\|/,$lineB,8 );
- if($value3 == $field1){
- $value3 = $data;
- $lineB = join('|',$value1,$value2,$value3,$value4,$value5,$value6,$value7);
- print FHB2 $lineB,"\n";
- }
- elsif($value7 == $field1){
- $value7 = $data;
- $lineB = join('|',$value1,$value2,$value3,$value4,$value5,$value6,$value7);
- print FHB2 $lineB,"\n";
- }
- }
- $field1 = $data++;
- $lineA = join('|',$field1,$field2,$field3,$field4,$field5);
- print FHA2 $lineA,"\n";
- }
- close(FHA1);
- close(FHA2);
- close(FHB1);
- close(FHB2);
复制代码
可是这样做的运行的结果是,类似文件B中第三行,在写到B.txt文件中时就会丢失;
请问这种情况处理?
[ 本帖最后由 nv2test 于 2006-7-6 09:57 编辑 ] |
|