免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: sunworld
打印 上一主题 下一主题

perl 比较文件 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2011-07-08 11:06 |只看该作者
#!/usr/bin/perl

use strict;
use warnings;
use Data:umper;
use Algorithm:iff qw(diff);

die ("Usage: $0 file1 file2 \n" if @ARGV != 2;

my ($file1, $file2) = @ARGV;
-T $file1 or die ("$file1: binary\n";# -T is meaning of looks a .txt file(看起来像文本文件)
-T $file2 or die ("$file2: binary\n";

my @f1 = `cat $file1`;
my @f2 = `cat $file2`;

my $diffs = diff(\@f1, \@f2);#This is a ref
#print Dumper \$diffs;

my $count;
for my $chunk (@$diffs) {
        $count++;
        for my $line (@$chunk) {
                my ($sign, $lineno, $text) = @$line;
                printf "$sign%d %s", $lineno+1, $text;
                #printf "%s",$text;
        }
        print "---------------\n";

我用AlgorithmIff写过,但好像不行,这里我的其中一个文件是所有数据,另一个文件是所有数据当中的一部分,我想比较这两个文件,把另一个文件中没有的数据取出来。可这个程序实现不了?

论坛徽章:
6
15-16赛季CBA联赛之新疆
日期:2016-03-22 22:34:5915-16赛季CBA联赛之山东
日期:2016-04-11 09:08:41程序设计版块每日发帖之星
日期:2016-06-28 06:20:00程序设计版块每日发帖之星
日期:2016-07-19 06:20:00每日论坛发贴之星
日期:2016-07-19 06:20:0015-16赛季CBA联赛之青岛
日期:2016-07-20 22:44:17
12 [报告]
发表于 2011-07-08 13:11 |只看该作者
我用的Diff::XS的Compact Diff,比较以后结果是数组里的索引。XS 版本比较perl版本kuai10-20倍。我比较1000-2000个文件只要20-30秒。

论坛徽章:
0
13 [报告]
发表于 2011-07-15 16:43 |只看该作者
可以用sort和uniq试一试~~

论坛徽章:
0
14 [报告]
发表于 2011-07-15 17:08 |只看该作者
在linux里,我觉得用sort和vimdiff直接看了

论坛徽章:
0
15 [报告]
发表于 2011-07-20 07:58 |只看该作者
回复 7# momocraft


    赞一个!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP