lbdbzj110 发表于 2015-12-29 08:06:30

perl 脚本学习-----两个文件排序之后输入到一个文件

  举个例子:
  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本身必须是排序完之后的。
页: [1]
查看完整版本: perl 脚本学习-----两个文件排序之后输入到一个文件