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-files
tù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ừ rdiff
và bsdiff
khá nhị phân. Cài đặt bdiff
từ 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 diff
chươ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ỳ diff
tùy chọn nào như vậy nhưng comm
giả 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.sorted
trước khi sử dụng chúng làm đầu ra chosort
. Đặt cả haisort
với&
nền và sử dụng cả hai đường dẫn làm tên tệp cho diff.