2011-12-30 47 views
9

Tôi có 3 tệp nhị phân. Hãy gọi cho họ file1.bin, file2.binfile3.bin.Khác nhau cho 3 tệp nhị phân

  • file1.binfile2.bin có một số phần phổ biến.
  • file2.binfile3.bin có một số phần phổ biến.

Tôi muốn tìm những phần chung giữa file1.binfile2.bin đó là khác nhau giữa file2.binfile3.bin.

Bạn khuyên bạn nên thực hiện điều đó như thế nào? Tôi đã bán các tập tin nhị phân cho các tập tin văn bản sử dụng xxd và sau đó đã làm một cách khác 3 chiều bằng cách sử dụng vim -d file1.txt file2.txt file3.txt.

Tuy nhiên, vim đánh dấu một phần là thay đổi trong tất cả các tệp ngay cả khi nó chỉ thay đổi trong một tệp và vẫn giữ nguyên trong hai tệp còn lại. Tôi muốn những loại sự kiện đặc biệt đó được đánh dấu khác nhau.

Trả lời

6

Có lẽ bạn có thể sử dụng sự khác biệt unix tích hợp sẵn (tôi nghĩ nó là một phần của OSX), nhưng sử dụng --unchanged-group-format để liệt kê các điểm giống nhau. Làm điều đó cho file1 và tập tin 2. Sau đó, làm điều đó cho file2 và file3. Sau đó bạn có thể làm một sự khác biệt thường xuyên trên hai tập tin kết quả.

Để biết cách nhận các điểm tương đồng, hãy xem this post.

-1

Chromium sử dụng bsdiff, sau đó chuyển sang courgette để làm khác biệt nhị phân như được giải thích trong blog của họ here. Bạn có thể tìm thấy những khách hàng tiềm năng hữu ích từ blog của họ.

+0

Có thể làm 3 cách khác biệt theo cách tôi đã mô tả trong sự cố không? Tôi không thể tìm hiểu làm thế nào, bạn vui lòng mô tả điều đó? – Dimme

+0

bsdiff hoạt động trên các tệp nhị phân và tạo bản vá nhị phân. vimdiff mong đợi các tập tin văn bản như đầu vào của nó vì vậy tôi không thể nghĩ ra một cách để làm cho bsdiff hoạt động theo cách bạn muốn ở đây. Thay vào đó, hãy xem liệu bạn có thể sử dụng tùy chọn '' 'diffexpr''' để dỗ vim để sử dụng cài đặt bổ sung cho chương trình khác khi tạo các khối cho các tệp nhị phân - có thể sử dụng tùy chọn '' -I'' để '' diff'' để chỉ định một regex cho "dòng" cần được bỏ qua khi làm khác biệt. – holygeek

0

Công cụ mà tôi làm việc cho (ECMerge) thực hiện điều đó. Bạn chỉ cần có để diff 3 tập tin nhị phân, nó sẽ trình bày phần bằng nhau ở phía trước của nhau, và byte sửa đổi một cách thích hợp đặt ở giữa. Không cần phải đầu tiên có được một bãi chứa hex. Bạn có thể viết kịch bản trong JavaScript để xuất ra bất cứ điều gì bạn thích dựa trên các kết quả khác và các byte trong các tệp (nó cũng hoạt động trong dòng lệnh).

Các vấn đề liên quan