严格逐行比较两个文件,没有插入或删除

Fri*_*itz 15 command-line diff file-comparison

我有两个文件,它们基本上包含十六进制格式的内存转储。目前我使用 diff 来查看文件是否不同以及差异在哪里。然而,当试图确定差异的确切位置(即内存地址)时,这可能会产生误导。考虑以下并排显示两个文件的示例。

file1:       file2:

0001    |    0001
ABCD    |    FFFF
1234    |    ABCD
FFFF    |    1234
Run Code Online (Sandbox Code Playgroud)

现在diff -u将显示一个插入和一个删除,尽管两个文件之间的 3 行(内存位置)发生了变化:

 0001
+FFFF
 ABCD
 1234
-FFFF
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法来比较这两个文件,以便每行仅与另一个文件中的同一行(就行编号而言)进行比较?因此,在此示例中,它应该报告最后 3 行已更改,以及从file1和更改的行file2。输出不必是 diff 样式,但如果它可以着色会很酷(目前我diff -u使用颜色为输出着色,sed以便可以轻松适应)。

cha*_*aos 20

这可能是一种方法:

diff <(nl file1) <(nl file2)
Run Code Online (Sandbox Code Playgroud)

nlnumberdiff一行一行地识别行的行。

  • 太好了,我不知道 nl 程序。那些 unix 工具真的很方便,但有_这么多_。 (4认同)
  • 我刚刚尝试过这个,不幸的是我得到的是:第一个文件的每一行,然后是第二个文件的每一行...而不是文件 1 中的第 1 行,然后是文件 2 中的第 1 行,然后是第 2 行从文件 1 开始,然后是文件 2 的第 2 行... (2认同)