vimdiff - 比较 2 个文件的奇怪问题

vimdiff - 比较 2 个文件的奇怪问题

当我比较以下两个文件时,它的比较是错误的。如何比较? file2 中的所有行都可用,但它不起作用。当我执行“vim -da b”时,它显示为 file2 中缺少值。

文件1:

BILLINGS TEST,0211,TBN Enlace,Cable Company,11429,Digital,2SDV,EIA158,58,256 QAM,158,999.000,Billings -
BILLINGS TEST,0212,ATRES SD,Cable Company,25733,Digital,2SDV,EIA158,59,256 QAM,158,999.000,DEC 16
BILLINGS TEST,0213,Fox Life,Cable Company,50854,Digital,2SDV,EIA158,60,256 QAM,158,999.000,Billings -
BILLINGS TEST,0214,Sorpresa,Cable Company,8777,Digital,2SDV,EIA158,61,256 QAM,158,999.000,Billings - AD
BILLINGS TEST,0215,Baby TV SAP,Cable Company,16036,Digital,2SDV,EIA158,62,256 QAM,158,999.000,Billings
BILLINGS TEST,0216,Semillitas,Cable Company,19867,Digital,2SDV,EIA158,63,256 QAM,158,999.000,Billings - AD
BILLINGS TEST,0217,Latele Novela,Cable Company,13353,Digital,2SDV,EIA158,64,256 QAM,158,999.000,Billings -
BILLINGS TEST,0218,CINE MEXICANO,Cable Company,12675,Digital,2SDV,EIA158,65,256 QAM,158,999.000,Billings -

文件2:

BILLINGS TEST,0211,TBN Enlace,Cable Company,11429,Digital,2SDV,EIA158,58,256 QAM,158,999.000,CLMS Billings
BILLINGS TEST,0213,Fox Life,Cable Company,50854,Digital,2SDV,EIA158,60,256 QAM,158,999.000,CLMS Billings
BILLINGS TEST,0214,Sorpresa,Cable Company,8777,Digital,2SDV,EIA158,61,256 QAM,158,999.000,CLMS Billings Test,0903,0041,MT_DSG_Plant
BILLINGS TEST,0215,Baby TV SAP,Cable Company,16036,Digital,2SDV,EIA158,62,256 QAM,158,999.000,CLMS
BILLINGS TEST,0216,Semillitas,Cable Company,19867,Digital,2SDV,EIA158,63,256 QAM,158,999.000,CLMS Billings Test,0903,0041,MT_DSG_Plant
BILLINGS TEST,0217,Latele Novela,Cable Company,13353,Digital,Big Timber -
BILLINGS TEST,0218,CINE MEXICANO,Cable Company,12675,Digital,bozapx03 - AD,EIA006,3,256
BILLINGS TEST,0219,DE PELICULA,Cable Company,50197,Digital,grfapx01 - AD,EIA006,5,256
BILLINGS TEST,0220,DE PELICULA CLASSICOS,Cable Company,50596,Digital,havapx01 -

在此输入图像描述

答案1

两个文件中的数据显然不相同。如果您查看标记为不同的第一行,就会发现存在差异。

文件 1 包含此行,而文件 2 不包含:

BILLINGS TEST,0212,ATRES SD,Cable Company,25733,Digital,2SDV,EIA158,59,256 QAM,158,999.0

即使你修复了这个问题,后面的行也会有所不同。

我真的不明白为什么您对vimdiff显示两个不同文件之间的差异感到困惑。也许您需要更新您的问题,更清楚地解释问题到底是什么?

可能有帮助的命令有sortcomm和 可能diff

答案2

随着线路的移动,vim 正在做我所期望的事情。并排来看,这是正确的。

答案3

vimdiff 看起来比人聪明一些diff,但它并不像人那么聪明。它在 file1 中找到以下行完全相同对于 file2 中的行,它将这些行视为匹配行。在匹配行之后,它会成对地比较两个文件中的连续行,而不查看 file1 中是否有任何行相似的到 file2 中的行。换句话说,当它不同步时,它不会重新同步,直到它在 file1 中找到以下行:完全相同到 file2 中的行。

作为罗艾玛指出,您的 File2 缺少 0212 行。因此,vimdiff 在这一点上变得不同步。由于此后没有相同的线路,因此它永远不会恢复同步。但即使是 roaima 似乎也忽略了这样一个事实:如果您在 File2 中插入 0212 行(即使它是一个虚拟行),vimdiff 会保持同步并执行以下操作:

vimdiff 屏幕截图

这是你想要的吗?

答案4

尝试使用meld比较两个文件

相关内容