Saya memiliki dua file yang terlihat identik dengan saya (termasuk spasi spasi putih dan baris baru) tetapi diff masih mengatakan mereka berbeda. Bahkan ketika saya melakukan diff -y
perbandingan berdampingan, garis-garisnya terlihat sama persis. Output dari diff adalah keseluruhan 2 file.
Adakah yang tahu penyebabnya?
sed -n l filename
. Jika tidak akan membantu, tambahkan contoh data dandiff
hasilkan di sini.file
perintah akan petunjuk Anda tentang isi file, termasuk hal-hal sepertiASCII text, with CRLF line terminators
vsASCII text
.Jawaban:
Aneh .. bisakah kamu mencoba
cmp
? Anda mungkin ingin menggunakan opsi '-b
' juga.cmp man page - Membandingkan dua file byte demi byte.
Ini adalah salah satu hal yang menyenangkan tentang Unix / Linux .. begitu banyak alat :)
sumber
-b
untukignore changes in the amount of white space
.Mungkinkah perbedaan disebabkan oleh akhir baris DOS vs UNIX, atau sesuatu yang serupa?
Bagaimana jika Anda
hexdump
mereka? Ini mungkin menunjukkan perbedaan lebih jelas, misalnya:sumber
Mencoba:
The
-t
pilihan akan menyebabkancat
menunjukkan karakter khusus jelas - misalnya.^M
untuk CR,^I
untuk tab.Dari halaman manual (OS X):
sumber
Tebakan pertama saya, yang ternyata dikonfirmasi, adalah bahwa file menggunakan akhiran baris yang berbeda. Mungkin ada beberapa perbedaan lain di spasi putih, seperti keberadaan spasi tambahan (tetapi Anda biasanya tidak akan mendapatkannya di banyak baris) atau lekukan yang berbeda (tab vs spasi). Gunakan perintah yang mencetak spasi putih dan mengontrol karakter dalam bentuk yang terlihat, seperti
Anda dapat mengonfirmasi bahwa perbedaan hanya berkaitan dengan akhiran garis dengan menormalkannya terlebih dahulu. Anda mungkin memiliki
dos2unix
utilitas; jika tidak, hapus karakter CR (^ M, \ r, \ 015) tambahan secara eksplisit:atau, jika
file1
ada yang dengan ujung DOSsumber