Câu trả lời:
Câu trả lời rõ ràng nhất là chỉ sử dụng lệnh diff và có lẽ nên thêm tham số --speed-Large-files vào nó.
diff --speed-large-files a.file b.file
Bạn đề cập đến các tệp chưa được sắp xếp vì vậy có thể bạn cần sắp xếp các tệp trước
sort a.file > a.file.sorted
sort b.file > b.file.sorted
diff --speed-large-files a.file.sorted b.file.sorted
bạn có thể lưu tạo một tệp đầu ra bổ sung bằng cách chuyển trực tiếp đầu ra loại thứ 2 vào diff
sort a.file > a.file.sorted
sort b.file | diff --speed-large-files a.file.sorted -
Rõ ràng những thứ này sẽ chạy tốt nhất trên một hệ thống có nhiều bộ nhớ khả dụng và bạn cũng có thể sẽ cần nhiều dung lượng đĩa trống.
Không rõ câu hỏi của bạn cho dù bạn đã thử những điều này trước đây. Nếu vậy thì sẽ rất hữu ích khi biết những gì đã sai (mất quá nhiều thời gian, v.v.). Tôi luôn thấy rằng các lệnh stock sort và diff có xu hướng thực hiện ít nhất cũng như các lệnh tùy chỉnh trừ khi có một số thuộc tính rất đặc trưng của các tệp giúp cho có thể thực hiện các thao tác khác nhau.
diff <(command 1) <(command 2)
<(cmd1) <(cmd2)cú pháp hoạt động (vì nó nghe giống như chuyển hướng đầu vào tiêu chuẩn hai lần!), Hãy thử echo hello <(cmd1) <(cmd2). Bạn sẽ thấy một cái gì đó giống như hello /dev/fd/63 /dev/fd/62đột nhiên làm cho nó rõ ràng;)
--speed-large-filestùy chọn không giúp ích gì nếu bạn không có đủ RAM. Ngoài ra, sắp xếp trước không hữu ích nếu bạn có cấu trúc bản ghi nhiều dòng bạn muốn giữ lại. Các tùy chọn được đề cập ở trên (bởi @unhammer) rất thú vị, nhưng đầu ra từ rdiffvà bsdiffkhá nhị phân. Cài đặt bdifftừ Hộp công cụ gia truyền trông giống như một nhiệm vụ dauning (yêu cầu các công cụ phát triển gia truyền, các tệp tiêu đề đã tuyệt chủng, trên mạng). Có thực sự đáng nỗ lực? Có những lựa chọn thay thế khác?
Sắp xếp các đầu vào và báo cho diffchương trình, các đầu vào của nó được sắp xếp sẽ giúp tăng tốc độ lớn. Tôi không biết bất kỳ difftùy chọn nào như vậy nhưng commgiả sử đầu vào được sắp xếp và sẽ nhanh hơn nhiều nếu nó đủ cho mục đích của bạn.
commđã làm việc rất tốt cho việc này, chưa bao giờ nghe về nó trước đây nhưng rõ ràng nó nằm trong lõi.
mkfifođể tạo[ab].file.sortedtrước khi sử dụng chúng làm đầu ra chosort. Đặt cả haisortvới&nền và sử dụng cả hai đường dẫn làm tên tệp cho diff.