Tôi cần làm việc với các tệp lớn và phải tìm sự khác biệt giữa hai tệp. Và tôi không cần các bit khác nhau, nhưng số lượng khác biệt.Làm thế nào để đếm sự khác biệt giữa hai tập tin trên Linux?
Để tìm số hàng khác nhau tôi đưa ra
diff --suppress-common-lines --speed-large-files -y File1 File2 | wc -l
Và nó hoạt động, nhưng là có một cách tốt hơn để làm điều đó?
Và cách đếm số khác biệt chính xác (với các công cụ chuẩn như bash, diff, awk, sed một số phiên bản cũ của perl)?
này không hoạt động, như tôi đã xác định "làm việc" http: // pastie. org/pastes/3179433/text Chỉ có một ký tự trong mỗi tệp, số "4" có liên quan đến gì? –
Thao tác này hoạt động. Đối với ví dụ của bạn, bạn có bốn dòng: hai đầu tiên là tên của mỗi tệp (như được giải thích trong câu trả lời) và hai khác là hai sự khác biệt, 1 dòng có 'a' bị loại bỏ và 1 dòng có 'b' được thêm vào. –
Nó phụ thuộc vào cách bạn tính sự khác biệt. Trong ví dụ này [pastie.org/5553254](http://pastie.org/5553254), tôi xem xét có 2 dòng khác nhau, tức là tôi đồng ý với mcdowell sequoia. Nó cũng là bất tiện để phải trừ 2 từ kết quả (do in ấn của 2 diff: ed tập tin). Vì vậy, tôi nghĩ câu trả lời của Josh là câu trả lời đúng. Nó có thể được rút ngắn một chút bằng cách sử dụng tùy chọn –c (count) trên grep, thay vì đường ống đến wc –l, như sau: 'diff -U 0 file1 file2 | grep -c^@ ' –