加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 20:59:17 所属栏目:大数据 来源:网络整理
导读:diff虽然也可以比较文件,但是工作中出现了两个文件中行的内容实际相同,但是顺序不同的情况(同一个文件中不会出现完全相同的行)。为了找出这些文件中的行差集,写了这么个脚本。 用法:diffSet fileA fileB 输出: 如果文件不同,在控制台输出只在fileA中

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

用法:diffSet fileA fileB

输出:

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

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

file: diffSet

?

 
 
  1. #!/usr/bin/perl?-w?
  2. use?strict;?
  3. ?
  4. my?($fileA,$fileB)?=?@ARGV;?
  5. ?
  6. open?A,'<',$fileA?or?die?"Unable?to?open?file:$fileA:$!";?
  7. my?%ta;?
  8. my?$i;??
  9. while(<A>){?
  10. ??chomp;?
  11. ??$ta{$_}?=?++$i;??
  12. }?
  13. ?
  14. close?A;?
  15. ?
  16. open?B,$fileB?or?die?"Unable?to?open?file:$fileB:$!";?
  17. my?@B;??
  18. while(<B>){?
  19. ????chomp;?
  20. ????unless?(defined?$ta{$_}){?
  21. ????????push?@B,$_;?
  22. ????}else{?
  23. ????????$ta{$_}?=?0;?
  24. ????}????
  25. }?
  26. close?B;?
  27. ?
  28. #?Output?diff?to?different?files?respectively?
  29. ?
  30. open?DIFF_A,?">$fileA.diff"?or?die?"Unable?to?create?diff?file?for?$fileA:$!";?
  31. my?$countA;?
  32. print?"Remain?in?files?$fileAn";?
  33. my?%tt?=?reverse?%ta;?
  34. ?
  35. foreach?(keys?%tt)?{?
  36. ????$countA?+=?$_>0??print?DIFF_A?$tt{$_}."n":0;?
  37. }?
  38. ?
  39. print?"$countA?linesn";?
  40. ?
  41. close?DIFF_A;?
  42. ?
  43. open?DIFF_B,?">$fileB.diff"?or?die?"Unable?to?create?diff?file?for?$fileB:$!";?
  44. my?$countB?=?scalar?@B;??
  45. print?DIFF_B?$_."n"?foreach?@B;??
  46. ?
  47. if?($countA?==?0?and?$countB?==0?){?
  48. ????print?STDOUT?"The?two?files?are?identicaln";?
  49. }?
  50. ?
  51. close?DIFF_B;?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读