Menggunakan diff pada file satu baris yang panjang


25

Saya memiliki file yang hanya memiliki satu baris. Ukurannya sekitar 20.000 byte.

File telah dimodifikasi, dan saya ingin tahu di mana.

Saya pikir menggunakan diff, tetapi ini menunjukkan kepada saya baris yang lengkap, karena output baris yang memiliki perbedaan - tetapi dalam hal ini satu-satunya baris dalam file yang memiliki perbedaan.

Jadi saya ingin melihat apa bedanya.

Ada saran?



2
pernahkah Anda mencoba
mem

Jawaban:


13

Dengan asumsi bahwa ada banyak spasi putih, seperti dalam teks normal, Anda dapat membagi file dengan kata-kata dan membandingkannya dengan alat diff normal, misalnya, berbaur:

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

2
Tampaknya menjadi solusi paling mudah bagi saya. Masalah diff itu sendiri sepele, namun sebagian besar alat (bukan hanya diff-tools) tidak dapat mengelola garis panjang, jadi masalahnya adalah berurusan dengan garis panjang, bukan perbedaan itu sendiri.
p1100i

4

Saya akan menemukan diff yang melakukan diff intra-line. Saya menggunakan xxdiff di UNIX. Saya pikir WinMerge melakukan diff intra-line pada Windows.

Jawaban lain juga baik: wdiff, atau membobol bongkahan - batas bongkahan lebih mudah untuk ditentukan jika data dibatasi oleh katakanlah pipa atau koma.


1
FYI, xxdiff segfaults jika garis lebih panjang dari 32.768 karakter ...
ValarDohaeris

3

Jika ini adalah masalah satu kali, saya akan membuat salinan file dengan \nkarakter yang dimasukkan setiap 50 karakter, kemudian memperbanyak salinan itu. (Saya memilih 50 karena itu membuat matematika mudah dari nomor baris yang berbeda untuk byte offset dalam file asli tetapi mungkin menyesuaikan yang naik / turun berdasarkan apa yang saya temukan.)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.