2017-03-02 78 views
0

我有2个HTML文件,我认为它们是相同的,但某些版本的diff给出了相互冲突的结果。不同版本的'差异'在比较2个相同的文件时给出了不同的结果

使用PHP卷曲(http://php.net/manual/en/book.curl.php)从远程URL下载了2个文件。这些文件是在不同的日子下载的,但我相信内容没有改变,包括任何标记。应用程序的目的实际上是确定是否有变化。

文件大小是相同的;两个358,341字节。目视检查内容显示它们是相同的。

为了确保在我的本地机器上使用DiffMerge的标记或其他内容没有差异,并且报告文件是相同的。

然而,当我ssh到一个CentOS服务器,并做一个比较,它显示运行diff file1.html file2.html

12159,12161c12159,12161 
    < 
    < 
    < 
    --- 
    > 
    > 
    > 
    12163,12172c12163,12172 
    < 
    < 
    < 
    < 
    < 
    < 
    < 
    < 
    < 
    < 
    --- 
    > 
    > 
    > 
    > 
    > 
    > 
    > 
    > 
    > 
    > 
    12174c12174 
    < 
    --- 
    > 

下面当我看着那些行号在文本编辑器没有明显的差异。这个输出实际上意味着什么?

我还使用了一个基于网页的差异工具https://github.com/chrisboulton/php-diff,它报告完全相同的行号与不同。然而,在“并排”模式(file1.html vs file2.html)中查看时的输出完全相同!

有没有人有任何想法如何调试,或者这个问题可能是什么?这两个文件在两种情况下使用相同的脚本和方法下载,据我所知,没有编码差异。

+0

是否有任何空格(tab/new line/blanks)差异? –

+0

你现在有没有关于控制字符,如换行符,缩进和其他东西。大部分时间你都可以看到文件的内容。得到像记事本+和检查这个内容。 – JustOnUnderMillions

+0

谢谢你们两位。受影响的行号上的制表符/空格是相同的。我已经使用Sublime来检查这一点,甚至突出显示该区域以“查看”标签/空格的样子;它们在两个文件上都是相同的。 – Andy

回答

1

尝试:

diff -w file1.html file2.html 

从手册:

-w --ignore-all-space Ignore all white space. 

空格字符包括选项卡,垂直制表符,进纸,回车,和空间;某些语言环境可能会将其他字符定义为空格。 source

+0

这非常有趣,因为当我运行它时,没有显示任何差异。那么这是否意味着我得到的奇怪输出是由于间距?我根据别人的建议查看了编辑器中的选项卡/间距,没有视觉差异,所以我不明白这是可能的吗? – Andy

+0

空格字符包括制表符,垂直制表符,换页符,回车符和空格;某些语言环境可能会将其他字符定义为空格。 来源:https://www.gnu.org/software/diffutils/manual/html_node/White-Space。html – GreensterRox

0

使用hexeditor来区分这两个文件,我很确定它们不是完全相同的。你会看到不同之处。例如wxHexEditor是免费的,多平台并且能够进行比较。

+0

我刚刚试过wxHexEditor,比较这两个文件时它在比较面板中什么都没显示。这真的很奇怪,但我想我的centOS服务器上的'diff'看到了一些差异 - 请参阅接受的答案。 – Andy

+1

奇怪。从你写的东西看,似乎有一个本地版本和一个远程版本。也许它在上传过程中发生了改变使用ftp文本模式。如果你运行校验和(sha256sum文件名),他们输出相同吗? – akg

+0

是的,这是一个很好的观点 - 那里*是一个本地和远程副本。本地机器使用本地机器上的软件(DiffMerge,wxHexEditor)进行比较,并使用'diff'在centOS服务器上比较遥控器,并在我的原始文章中提到PHP差异工具。奇怪的是这些文件被下载*在远程服务器上*这是它显示它们不同的地方;在我的本地机器上,它们是完全相同的,这与您所期望的相反,因为转移远离本地而非其他方式。忽略空白可以远程修复它 – Andy

相关问题