web-dev-qa-db-ja.com

挿入や削除をせずに、2つのファイルを1行ずつ厳密に比較する

16進数形式のメモリダンプを本質的に含む2つのファイルがあります。現時点では、diffを使用して、ファイルが異なるかどうか、どこが異なるかを確認しています。ただし、違いの正確な場所(メモリアドレスなど)を特定しようとすると、誤解を招く可能性があります。 2つのファイルを並べて表示する次の例を考えてみます。

file1:       file2:

0001    |    0001
ABCD    |    FFFF
1234    |    ABCD
FFFF    |    1234

これでdiff -uは1つの挿入と1つの削除を示しますが、2つのファイル間で3行(メモリの場所)が変更されています。

 0001
+FFFF
 ABCD
 1234
-FFFF

2つのファイルを比較して、各行が他のファイルの(行番号に関して)同じ行とのみ比較されるようにする簡単な方法はありますか?したがって、この例では、file1およびfile2からの変更された行とともに、最後の3行が変更されたことを報告する必要があります。出力はdiffスタイルである必要はありませんが、色分けできると便利です(現時点ではsedを使用してdiff -u出力に色を付けるので、簡単に変更できます)。

14
Fritz

これはアプローチかもしれません:

diff <(nl file1) <(nl file2)

nl numberを指定すると、diffが行ごとに認識する行。

19
chaos