Command-Line
嚴格逐行比較兩個文件,不插入或刪除
我有兩個文件,它們基本上包含十六進制格式的記憶體轉儲。目前我使用 diff 來查看文件是否不同以及差異在哪裡。然而,當試圖確定差異的確切位置(即記憶體地址)時,這可能會產生誤導。考慮以下並排顯示兩個文件的範例。
file1: file2: 0001 | 0001 ABCD | FFFF 1234 | ABCD FFFF | 1234
現在
diff -u
將顯示一個插入和一個刪除,儘管兩個文件之間有 3 行(記憶體位置)發生了變化:0001 +FFFF ABCD 1234 -FFFF
有沒有一種簡單的方法來比較這兩個文件,使得每一行只與另一個文件中的同一行(就行號而言)進行比較?所以在這個例子中,它應該報告最後 3 行已更改,以及從
file1
和更改的行file2
。輸出不必是 diff 風格的,但如果它可以著色會很酷(目前我diff -u
使用輸出著色sed
以便可以輕鬆調整)。
這可能是一種方法:
diff <(nl file1) <(nl file2)
用
nl
編號diff
逐行辨識行的行。
改編自融合的答案,這在命令行中對我有用
sort -n -k1,1 -s <(nl file1) <(nl file2)
。在沒有安裝 meld 的地方很有用。