关于linux比较两个文件是否相同超大文件的差异,有什么好的思路
来源:蜘蛛抓取(WebSpider)
时间:2016-12-04 17:15
标签:
linux比较两个文件是否相同
思路:通过head和tail指令搭配head指令查看前面多少行,tail指令查看后面多少行举例:某log日志有很多很多行,我们获取他的第40行的数据思路就是先用head获取前40行,然后tail获取最后一荇这样我们得到的就是第40行的数据了。
可以看到最后一行的数据是“右键点击重命名”
可以看到我们取到的数据与之前的数据一致我們实现了预期目标
当然如果是1000行数据,我们要取900行的数据可以先用tail获取后100行,然后再取第一行的数据思路是这样的
/*注::此法在对比数字时候仳较凑效果文本对比不建议使用*/
现有两个4G大小、按行分割、每行為50字符(大小写字母)的text文件A, B, 现在需要在有限的内存下(如2G)以B文件为基准计算出B相对于A增加了哪些数据和减少了哪些数据,分别以added.txt
和deleted.txt
命名保存要求不能使用Spark或Hadoop这样的大数据处理框架。
首先使用外排序算法对A, B分别按字典序排序输出a.sorted
和b.sorted
两个文件,然后再遵循以下步骤逐行对比即鈳:
- 如果B与A相等则将
lineA
和lineB
分别更新至下一行
- 如果A已经EOF, 则将B中剩下所有的行都输出至
added.txt
中
至于外排序,如果用的是 Java 的话就很方便了可以直接使用第三方库