- 论坛徽章:
- 0
|
回复 #9 perlw01f 的帖子
本帖最后由 toniz 于 2010-02-02 12:38 编辑
you may try this::wink:
- #!/usr/bin/perl
- use strict;
- open FILE1,"old.log" or die "can't open file: old.log .$!";
- open FILE2,"update.log" or die "can't open file: update.log .$!";
- open FILE3,">>result.log" or die "can't open file: update.log .$!";
- my @result;
- my $count = 0;
- while (my $tmp = <FILE1>) {
- my ($col1,$col2,$col3) = ($tmp =~/^(\d+)\t(\d+)\t(.*?)\t/);
- if(!$col3){
- seek (FILE2,0,0);
- my @rp = grep /^$col1/,<FILE2>;
- my $rp = pop @rp;
- my $rp_c3= $1 if($rp =~ /^\d+\t(\w{32})/);
- $tmp =~ s/(^\d+\t\d+\t).*?(\t.*)/$1$rp_c3$2/;
- }
- push @result,$tmp;
- $count++;
- if($#result >2){
- print FILE3 @result;
- $count = 0;
- @result=();
- }
- }
- print FILE3 @result;
- close FILE1;
- close FILE2;
- close FILE3;
复制代码 old.log FILE content
234132454594 39809871 dsoiniunlwiauwefjaopdfiasufiofps balabala bwrtla balabala
234132454594 39588771 balabala bartrbala balabala
111111222212 12345771 balabala bartrbala balabala
158873235456 31267809 balabala bartrbala balabala
update.log FILE content
123248980898 ooireoiroeooooiqoiepqeirpoooppqe
111111222212 sadfadaeferteawteaetwetatawdfase
158873235456 dsoiniunlwiauwefjaopdfiasufiofps
result.log
234132454594 39809871 dsoiniunlwiauwefjaopdfiasufiofps balabala bwrtla balabala
234132454594 39588771 balabala bartrbala balabala
111111222212 12345771 sadfadaeferteawteaetwetatawdfase balabala bartrbala balabala
158873235456 31267809 dsoiniunlwiauwefjaopdfiasufiofps balabala bartrbala balabala
[ 本帖最后由 toniz 于 2010-1-27 10:33 编辑 ] |
|