一个用于比较两个文件行中不同的Perl脚本

一个用于比较两个文件行中不同的Perl脚本,第1张

概述diff虽然也可以比较文件,但是工作中出现了两个文件中行的内容实际相同,但是顺序不同的情况(同一个文件中不会出现完全相同的行)。为了找出这些文件中的行差集,写了这么个脚本。 用法:diffSet fileA fileB 输出: 如果文件不同,在控制台输出只在fileA中出现的行的行数,及只在fileB中出现的行的行数,并将这些行分别输出到fileA.diff及fileB.diff两个文件中 如果文

diff虽然也可以比较文件,但是工作中出现了两个文件中行的内容实际相同,但是顺序不同的情况(同一个文件中不会出现完全相同的行)。为了找出这些文件中的行差集,写了这么个脚本。

用法:diffSet fileA fileB

输出:

如果文件不同,在控制台输出只在fileA中出现的行的行数,及只在fileB中出现的行的行数,并将这些行分别输出到fileA.diff及fileB.diff两个文件中

如果文件相同,则输出两个文件相同的信息

file: diffSet

 

  #!/usr/bin/perl -w     use strict;          my ($fileA,$fileB) = @ARGV;          open A,'<',$fileA or dIE "Unable to open file:$fileA:$!"    my %ta;     my $i;      while(<A>){       chomp;       $ta{$_} = ++$i;               close A;          open B,$fileB or dIE "Unable to open file:$fileB:$!"    my @B;      while(<B>){         chomp;         unless (defined $ta{$_}){             push @B,$_;         }else            $ta{$_} = 0        }            close B;          # Output diff to different files respectively          open DIFF_A, ">$fileA.diff" or dIE "Unable to create diff file for $fileA:$!"    my $countA;     print "Remain in files $fileA\n"    my %tt = reverse %ta;          foreach (keys %tt) {         $countA += $_>0print DIFF_A $tt{$_}."\n":0             print "$countA lines\n"         close DIFF_A;          open DIFF_B, ">$fileB.diff" or dIE "Unable to create diff file for $fileB:$!"    my $countB = scalar @B;      print DIFF_B $_."\n" foreach @B;           if ($countA == 0 and $countB ==0 ){         print STDOUT "The two files are IDentical\n"             close DIFF_B;   
总结

以上是内存溢出为你收集整理的一个用于比较两个文件行中不同的Perl脚本全部内容,希望文章能够帮你解决一个用于比较两个文件行中不同的Perl脚本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1292110.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存