一、结论先行:比对停在「行」这一层

能按行号告诉你两边有多少行对不上,不能只把一行里改掉的几个字标出来。「文本比较」的粒度是整行,输出是三档汇总数字:共几行、相同几行、差异几行,没有字符级的红绿高亮。

这一步在浏览器里完成,文件不上传到服务器,两边文本粘进去就出统计。要理解它为什么给不出「差哪几个字」,得先看它是怎么配对的:它不猜哪两行该对上,只把第一边的第 1 行对第二边的第 1 行,第 2 行对第 2 行,一路配下去。

二、为什么行级配对给不了字级答案

逐行配对只需要一次比较:两行字符完全相等,记一行相同;只要有一个字符不等,整行就落进差异。判定结果是二值的,没有「差了一个字」和「差了三十字」的分档,后者需要另一套算法。

字符级高亮要先在两段文字之间找出公共片段,再在片段之间对齐差异,属于另一种粒度的计算,代价和输出形态都不一样。「文本比较」刻意停在行级,换来的是结果极短、极稳:三个数字,任何长度的文本都算得出来。这也是为什么同一行里只改了一个字,和整行重写,在它这里都是「差异一行」。

三、这一族文本面板各自做到哪一层

面板比对的单位给你什么明确不做
文本比较整行,按行号配对共几行、相同几行、差异几行不做字符级差异高亮
文本去重整行,全等比对且区分大小写去掉后出现的重复行不比较两份文本
文本查找替换一个固定字面量替换后的文本与命中数不支持正则表达式
删除空行整行去掉空行与只有空格的行不判断内容是否重复
TXT处理行与字符可切正则做替换、排序不出逐行差异汇总

四、分场景怎么选

  • 只想量一下两版的改动幅度:直接用这一档,三个数字足够回答「改了三行还是改了三百行」。
  • 想知道某个条款被改成了什么:这一档给不了,把两边同一行号的内容并排人工对照,或者用「文本查找替换」先把两边共有的冗长写法压短,再比一次,差异行会更容易定位。
  • 手上是一份文本、要清掉重复条目:那不需要比较,走「文本去重」,它区分大小写、保留首次出现。
  • 两边长度差得很多:先想清楚是不是粘漏了内容,超出较短行数的部分没有配对对象,全部计入差异行。
  • 行序本身被打乱了:差异数会虚高,属于另一个问题,先把两边对齐再回来看数字。

五、按这个顺序读结果

  1. 先看总行数:两边行数不等,说明有内容只存在于一侧,这是结构性差异,不是文字改动。
  2. 再看相同行数:它是「按行号逐字完全相同」的行数,大小写、空格、全角半角不同都不算相同。
  3. 再看差异行数:一行只差一个字和整行重写,在这里是同一个数,别用它估计改动量。
  4. 最后确认这三者的关系:相同行加差异行等于总行数,对不上就说明有一侧被截断。
  5. 要落到具体改动:这一档给不了字级位置,把可疑行号附近的两段各摘几行并排人工读,比盯着汇总数字猜有效得多。
  6. 要比第二次之前先统一步骤:两边都跑过同一套删空行与清洗动作,两次的数字才在同一个基线上,否则你会把清洗差异读成改动差异。

六、别做这几件事

  • 别把它当校对工具用:它不告诉你改了什么,只告诉你有多少行没配上,指望它替代人工看条款会漏掉全部细节。
  • 别用差异行数估工作量:一行改一个字记一行差异,改一百个字也记一行差异,两者在这个数字上完全等价。
  • 别以为它会重新配对:它严格按行号比对,不会跳过插入的一段去找后面的相同行。
  • 别在这里找字符高亮:站内没有字符级差异高亮这个入口,写进需求也不会有。

常见问题

问:一行里只改了一个字,会被算成差异吗?
答:会,判定条件是整行字符完全相同,一个字的差异就让这一行落进差异行,与整行重写算同一档。

问:两边文本长度不一样,结果还有意义吗?
答:有意义但要分开读,超出较短边的那几行没有配对对象,全部计入差异,所以先看两边总行数差多少,再读差异行数。

问:比较两份涉密文本,需要先评估能不能上传吗?
答:不用,这一步在浏览器里完成,文本不离开本机,粘进去直接出汇总数字。

本站入口

入口是办公工具聚合页里的 文本比较 面板,粘入两边文本即得共几行、相同几行、差异几行的统计,这一步在浏览器里完成。

想顺手清掉重复行走 文本去重,想先把两边共有写法压短再定位改动处用 文本查找替换。