如何在Linux中比较两个大文件?

时间:2016-03-28 20:07:58

标签: linux file terminal

我有两个大文件,一个C代码逐行写入9600000个浮点值。我知道有类似的,它们实际应该是一样的。如何比较它们,看看是否有任何区别? 我试过了

cmp base.txt base4.txt
base.txt base4.txt differ: byte 811221, line 62402

但这不起作用,它会在屏幕上打印出第二个文件。

{{1}}

这是什么意思,62402行不同?

1 个答案:

答案 0 :(得分:2)

cmp的输出意味着文件之间的第一个区别是文件中的字节位置811221,它位于62402行上。例如,如果两个文件是:

abcd
1234
wxyz
9876

abcd
1234
wqyz
9812

输出是:

file1.txt file2.txt differ: char 12, line 3

因为在第3行,一个文件有x而另一个文件有q,这些文件位于字节位置12(换行符包含在字节中计数)。

如果您想查看所有差异,请使用-l选项。

$ cmp -l file1.txt file2.txt
12 170 161
18  67  61
19  66  62

请注意,与diff不同,这对于插入和删除并不聪明,它只是比较每个位置的每个字节。因此,如果您在文件的早期插入或删除某个字符,那么之后的所有内容都将显示为不匹配。