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?

Jperelli
sumber
3
Kata demi kata yang berbeda? manpages.ubuntu.com/manpages/lucid/man1/wdiff.1.html
VenkatH
2
pernahkah Anda mencoba
mem
unix.stackexchange.com/questions/11128/diff-within-a-line
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

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
Philipp Claßen
sumber
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.

Homolka yang kaya
sumber
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.)

Nicole Hamilton
sumber