挿入または削除せずに、2行のファイルを厳密に行ごとに比較します


13

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

file1:       file2:

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

今、diff -u3つのライン(メモリ位置)は、2つのファイル間で変更されているものの、1つの挿入と1つの欠失を表示します。

 0001
+FFFF
 ABCD
 1234
-FFFF

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

回答:


18

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

diff <(nl file1) <(nl file2)

nl番号の行diffの行を認識して1行ずつ。


3
それはクールです、私はnlプログラムを知りませんでした。これらのUNIXツールは本当に便利ですが、それらの多くがあります。
フリッツ14年

1
私はこれを試してみましたが、残念ながら、最初のファイルのすべての行、2番目のファイルのすべての行が続きます...ファイル1の1行目、ファイル2の1行目、2行目ファイル1から、ファイル2から2行目が続きます...
マイケル

@MichaelHewson 2つのファイルに共通の行がないようです。その場合、それがまさに機能する方法diffです。meld2つのファイルを並べて表示するguiプログラムを試すことができます。ようにmeld <(nl file1) <(nl file2)
フリッツ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.