举个例子:
file1是这样的:
11111111111111
22222222222222
55555555555555
66666666666666
file2是这样的:
33333333333333
44444444444444
77777777777777
88888888888888
而我想得到的结果file3是:
11111111111111
22222222222222
33333333333333
44444444444444
55555555555555
66666666666666
77777777777777
88888888888888
程序举例:
open IN1,'<',$file1;open IN2,'<',$file2;open OUT,'>',$file_out;my $line1 = <IN1>;my $line2 = <IN2>;while (1) { # do this, when a file reaches its end if (!defined $line1) { # file1 ended, write lasting parts of file2 print OUT $line2; while (<IN2>) { print OUT } last; } if (!defined $line2) { # file2 ended, vise versa print OUT $line1; while (<IN1>) { print OUT } last; } # the main compare if ($line1<$line2) { print OUT $line1; $line1 = <IN1>; } elsif ($line2<$line1) { print OUT $line2; $line2 = <IN2>; } else { die "EXCEPTION: two identical lines: <$line1> and <$line2>"; }}程序局限:
file1 和 file2本身必须是排序完之后的。