一、结论先行:比对停在「行」这一层
能按行号告诉你两边有多少行对不上,不能只把一行里改掉的几个字标出来。「文本比较」的粒度是整行,输出是三档汇总数字:共几行、相同几行、差异几行,没有字符级的红绿高亮。
这一步在浏览器里完成,文件不上传到服务器,两边文本粘进去就出统计。要理解它为什么给不出「差哪几个字」,得先看它是怎么配对的:它不猜哪两行该对上,只把第一边的第 1 行对第二边的第 1 行,第 2 行对第 2 行,一路配下去。
二、为什么行级配对给不了字级答案
逐行配对只需要一次比较:两行字符完全相等,记一行相同;只要有一个字符不等,整行就落进差异。判定结果是二值的,没有「差了一个字」和「差了三十字」的分档,后者需要另一套算法。
字符级高亮要先在两段文字之间找出公共片段,再在片段之间对齐差异,属于另一种粒度的计算,代价和输出形态都不一样。「文本比较」刻意停在行级,换来的是结果极短、极稳:三个数字,任何长度的文本都算得出来。这也是为什么同一行里只改了一个字,和整行重写,在它这里都是「差异一行」。
三、这一族文本面板各自做到哪一层
| 面板 | 比对的单位 | 给你什么 | 明确不做 |
|---|---|---|---|
| 文本比较 | 整行,按行号配对 | 共几行、相同几行、差异几行 | 不做字符级差异高亮 |
| 文本去重 | 整行,全等比对且区分大小写 | 去掉后出现的重复行 | 不比较两份文本 |
| 文本查找替换 | 一个固定字面量 | 替换后的文本与命中数 | 不支持正则表达式 |
| 删除空行 | 整行 | 去掉空行与只有空格的行 | 不判断内容是否重复 |
| TXT处理 | 行与字符 | 可切正则做替换、排序 | 不出逐行差异汇总 |
四、分场景怎么选
- 只想量一下两版的改动幅度:直接用这一档,三个数字足够回答「改了三行还是改了三百行」。
- 想知道某个条款被改成了什么:这一档给不了,把两边同一行号的内容并排人工对照,或者用「文本查找替换」先把两边共有的冗长写法压短,再比一次,差异行会更容易定位。
- 手上是一份文本、要清掉重复条目:那不需要比较,走「文本去重」,它区分大小写、保留首次出现。
- 两边长度差得很多:先想清楚是不是粘漏了内容,超出较短行数的部分没有配对对象,全部计入差异行。
- 行序本身被打乱了:差异数会虚高,属于另一个问题,先把两边对齐再回来看数字。
五、按这个顺序读结果
- 先看总行数:两边行数不等,说明有内容只存在于一侧,这是结构性差异,不是文字改动。
- 再看相同行数:它是「按行号逐字完全相同」的行数,大小写、空格、全角半角不同都不算相同。
- 再看差异行数:一行只差一个字和整行重写,在这里是同一个数,别用它估计改动量。
- 最后确认这三者的关系:相同行加差异行等于总行数,对不上就说明有一侧被截断。
- 要落到具体改动:这一档给不了字级位置,把可疑行号附近的两段各摘几行并排人工读,比盯着汇总数字猜有效得多。
- 要比第二次之前先统一步骤:两边都跑过同一套删空行与清洗动作,两次的数字才在同一个基线上,否则你会把清洗差异读成改动差异。
六、别做这几件事
- 别把它当校对工具用:它不告诉你改了什么,只告诉你有多少行没配上,指望它替代人工看条款会漏掉全部细节。
- 别用差异行数估工作量:一行改一个字记一行差异,改一百个字也记一行差异,两者在这个数字上完全等价。
- 别以为它会重新配对:它严格按行号比对,不会跳过插入的一段去找后面的相同行。
- 别在这里找字符高亮:站内没有字符级差异高亮这个入口,写进需求也不会有。
常见问题
问:一行里只改了一个字,会被算成差异吗?
答:会,判定条件是整行字符完全相同,一个字的差异就让这一行落进差异行,与整行重写算同一档。
问:两边文本长度不一样,结果还有意义吗?
答:有意义但要分开读,超出较短边的那几行没有配对对象,全部计入差异,所以先看两边总行数差多少,再读差异行数。
问:比较两份涉密文本,需要先评估能不能上传吗?
答:不用,这一步在浏览器里完成,文本不离开本机,粘进去直接出汇总数字。
本站入口
入口是办公工具聚合页里的 文本比较 面板,粘入两边文本即得共几行、相同几行、差异几行的统计,这一步在浏览器里完成。