跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 如何比较两个大的文本文件内容的差异
未分類
16 6 月 2020

如何比较两个大的文本文件内容的差异

如何比较两个大的文本文件内容的差异

資深大佬 : yeyu1989 66

假设 A、B 两个文件,按行比,显示 A 比 B 多的行、B 比 A 多的行、A 与 B 都存在但是不一致的行。 类似于实现 Beyond Compare 的功能。

大佬有話說 (12)

  • 資深大佬 : TimePPT

    既然是 python 节点的话,试试 python 标准库 difflib ?
    https://docs.python.org/zh-cn/3.7/library/difflib.html

  • 資深大佬 : Vegetable

    这也太笼统了,你这个需求也许 git diff 就能满足,”A 与 B 都存在但是不一致的行”是说位置不同吗?
    简单来说,因为你的最小对比单位是行,所以你可以直接计算单行的 md5,为两个文件建立{hash:line_no}的字典,进行后续处理.

  • 資深大佬 : haozxuan001

    linux 有一个 comm 可以了解一下,不同的参数可以对比出不同的差异,比如 A 有 B 无,A 无 B 有,当然需要注意一句这两个大文件需要先排序一下

  • 資深大佬 : leafin

    “A 与 B 都存在但是不一致的行”这一句话怎么定义?

  • 資深大佬 : SoulMelody

    https://meldmerge.org/

  • 主 資深大佬 : yeyu1989

    追加问题描述:
    大文件有多大:可达 G 级别
    文件格式:多为每行定长的 txt 文件,按列定义不同的字段。之前有考虑过,先将 txt 转为 csv 文件,定义主键,再比对,但是这样对存储、内存消耗都特别大,并且有的文件定义主键后建不了索引,也无法完成比对

    Beyond Compare 在定义 A 有 B 无、A 无 B 有、AB 不一致时,貌似是按照相似度来处理的?这个第一没有主键说明,确实不好定义。

    以上。
    @Vegetable @haozxuan001 @leafin
    @TimePPT 多谢,我去学习下,看看行不行

  • 資深大佬 : gwy15

    看看 Myers 算法

  • 資深大佬 : haozxuan001

    @yeyu1989 我之前做过 M 级别的,个人认为如果达到 G 的级别,一定是先排序后对比,这样才能不爆内存的情况下,“一块块”的对比出来,另外你的 AB 不一致相似度这种就玄学了,一样就是一样,不一样错一个字符都不一样,如果这是一个强需求,可能我上述的方案就合适了,如果是弱需求,可以先找出两个文件的差异行。

  • 資深大佬 : richzhu

    vimdiff fileA fileB

  • 資深大佬 : 614457662

    先 sort 再 diff

  • 資深大佬 : hxse

    @yeyu1989 标准库 difflib 能解决你的需求吗

  • 主 資深大佬 : yeyu1989

    @hxse 还没有试 ///直觉不行,效率可能跟不上

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具