免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3860 | 回复: 12
打印 上一主题 下一主题

求一文件比较程序~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-08-25 14:28 |只看该作者 |倒序浏览
需要实现如下功能:
文件改变前后
哪行修改了
哪行删除了
哪行添加了
看了看diff命令.没头绪
用了sourcesafe比较,发现bug太多,有时候根本揣摩不到人们原来的本意~
如果那位大g以前做过,希望给指点一二~

论坛徽章:
0
2 [报告]
发表于 2003-08-25 14:41 |只看该作者

求一文件比较程序~

仅供参考 :)


  1. #!/usr/bin/perl

  2. use Array::Compare;
  3. $comp = Array::Compare->;new(WhiteSpace =>; 1);

  4. @a1 = `cat file1`;
  5. @a2 = `cat file2`;

  6. @result = $comp->;full_compare(\@a1, \@a2);

  7. foreach(@result)
  8. {
  9.    print $_ + 1, "th line:\n";
  10.    print ">; $a1[$_]>; $a2[$_]";
  11.    print "-----\n";
  12. }
  13. exit 0;
复制代码

论坛徽章:
0
3 [报告]
发表于 2003-08-25 14:46 |只看该作者

求一文件比较程序~

[quote]原帖由 "deathcult"][/quote 发表:
     
谢谢斑竹,但是我想要的是思想,不是代码,呵呵~
我想知道,文件比较是如何实现的,我想用servlet写
服务端的处理逻辑。所以如果斑竹知道是如何处理的,还
请指点一下~谢谢~

论坛徽章:
0
4 [报告]
发表于 2003-08-25 14:50 |只看该作者

求一文件比较程序~

原帖由 "anonimousboy" 发表:
   
谢谢斑竹,但是我想要的是思想,不是代码,呵呵~
我想知道,文件比较是如何实现的,我想用servlet写
服务端的处理逻辑。所以如果斑竹知道是如何处理的,还
请指点一下~谢谢~
   


:)

没什么思想啊,
我也是一行一行比较的。

论坛徽章:
0
5 [报告]
发表于 2003-08-25 15:02 |只看该作者

求一文件比较程序~

不知道斑竹用没用过sourcesafe那软件,如果是一行一行比较的话,肯定很简单了,它还会根据文件内容在原来文件中插入空行,进行比较。(两个文件可能行数不一样)比如:
cat 1.txt
aaa                    
bbb
ccc
ddd
eee
fff
cat 2.txt
aaa
bbb
ddd
eee
fff
我需要知道ccc那行是被删除了,而不是有很ccc以后的行都不一样。这是最好处理的一种情况了。

论坛徽章:
0
6 [报告]
发表于 2003-08-25 15:29 |只看该作者

求一文件比较程序~

sourcesafe是微软的cvs吧。


把文件按行放入数组,然后比较2个数组的区别。
这样就不会出现你说的那个情况了。


我说的一行一行是这个意思 :)

论坛徽章:
0
7 [报告]
发表于 2003-08-25 15:34 |只看该作者

求一文件比较程序~

或者你研究一下diff的源码吧。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
8 [报告]
发表于 2003-08-25 15:35 |只看该作者

求一文件比较程序~

以原始檔案為主...
找出第二個file裡面與第一個file相同的line number,其他的就是
就是不一樣的地方了...例如
source:
1:aaa
2:bbb
3:cccc
4:dddd
modified:
1:aaa
2:ccc
3:ddd
4:EEEEE

modified後..比對原來source
1->;1,2->;2,3->;4,4->;null
所以可以知道source的line 3不見了...
modified的line4是新增加的或修改過了....

大概就是這樣囉...

论坛徽章:
0
9 [报告]
发表于 2003-08-25 16:58 |只看该作者

求一文件比较程序~

研究一下这个模块吧,File::Compare。
看看有没有什么启发。

他实现的功能类似于cmp command。

论坛徽章:
0
10 [报告]
发表于 2003-08-25 17:07 |只看该作者

求一文件比较程序~

又发现一个好模块:Algorithm:iff

模块包里提供一个小工具-diff.pl(用Algorithm:iff实现),短小精悍,功能实现类似于diff command。

非常不错。     



马上加到置顶里:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP