Sử dụng diff trên tệp một dòng dài


25

Tôi có một tập tin chỉ có một dòng. Kích thước của nó là khoảng 20.000 byte.

Các tập tin đã được sửa đổi, và tôi muốn biết nơi.

Tôi nghĩ rằng sử dụng diff, nhưng nó cho tôi thấy dòng hoàn chỉnh, bởi vì nó xuất ra dòng có sự khác biệt - nhưng trong trường hợp này, đó là dòng duy nhất trong tệp có sự khác biệt.

Vì vậy, tôi muốn xem sự khác biệt là gì.

Có lời khuyên nào không?



2
bạn đã thử chuyển nó sang fmt chưa (nếu bạn sử dụng linux), bạn có thể thực hiện "fmt -w 50 long.txt | diff"
l1zard

Câu trả lời:


13

Giả sử có nhiều khoảng trắng, như trong văn bản bình thường, bạn có thể chia tệp bằng từ và so sánh nó với một công cụ tìm khác thường, ví dụ: meld:

tr -s ' ' '\n' < file1.txt > file1.txt.split
tr -s ' ' '\n' < file2.txt > file2.txt.split
meld file1.txt.split file2.txt.split

2
Có vẻ là giải pháp đơn giản nhất đối với tôi. Bản thân vấn đề diff là không đáng kể, tuy nhiên hầu hết các công cụ (không chỉ là công cụ diff) không thể quản lý các dòng dài, vì vậy vấn đề là xử lý các dòng dài hơn, chứ không phải là chính nó.
p1100i

4

Tôi sẽ tìm thấy một khác biệt mà khác biệt nội dòng. Tôi sử dụng xxdiff trên UNIX. Tôi nghĩ WinMerge không khác biệt nội tuyến trên Windows.

Các câu trả lời khác cũng tốt: wdiff, hoặc chia thành các đoạn - ranh giới khối dễ xác định hơn nếu dữ liệu được phân định bằng cách nói một đường ống hoặc dấu phẩy.


1
FYI, xxdiff segfaults nếu các dòng dài hơn 32768 ký tự ...
ValarDohaeris

3

Nếu đây là sự cố một lần, tôi sẽ tạo các bản sao của tệp với các \nký tự được chèn mỗi 50 ký tự, sau đó tìm các bản sao đó. (Tôi đã chọn 50 vì nó làm cho phép toán dễ dàng chuyển từ số dòng khác nhau sang phần bù byte trong các tệp gốc nhưng có thể điều chỉnh tăng / giảm dựa trên những gì tôi tìm thấy.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.