Mam dwa pliki, które wyglądają identycznie do mnie (w tym końcowe białe znaki i znaki nowej linii), ale diff wciąż mówi, że się różnią. Nawet kiedy to zrobiędiff -y
porównanie obok siebie, linie wyglądają dokładnie tak samo. Dane wyjściowe z diff to całe 2 pliki.
Masz pojęcie, co to powoduje?
sed -n l filename
. Jeśli to nie pomoże, dodaj przykład danych idiff
wyjdź tutaj.file
polecenie podpowie Ci o zawartości pliku, w tym np .ASCII text, with CRLF line terminators
Vs.ASCII text
Odpowiedzi:
Dziwne ... możesz spróbować
cmp
? Możesz także skorzystać z-b
opcji „ ”.strona podręcznika cmp - Porównaj dwa pliki bajt po bajcie.
Jest to jedna z fajnych cech Uniksa / Linuksa ... tak wiele narzędzi :)
źródło
-b
jest dlaignore changes in the amount of white space
.Czy różnice mogą wynikać z zakończenia linii DOS vs. UNIX, czy coś podobnego?
Co jeśli ty
hexdump
? Może to pokazywać różnice w bardziej oczywisty sposób, np .:źródło
Próbować:
-t
Opcja spowodujecat
pokazać wyraźnie żadnych znaków specjalnych - np.^M
dla CR,^I
dla tab.Ze strony podręcznika (OS X):
źródło
Moje pierwsze przypuszczenie, które okazuje się potwierdzone, polega na tym, że pliki mają różne zakończenia linii. Może to być inna różnica w białych znakach, na przykład obecność białych znaków na końcu (ale zwykle nie występuje w wielu liniach) lub różne wcięcia (tabulatory a spacje). Użyj polecenia, które drukuje białe znaki i kontroluje znaki w widocznej formie, np
Możesz potwierdzić, że różnice dotyczą tylko zakończeń linii, najpierw je normalizując. Możesz mieć
dos2unix
narzędzie; jeśli nie, jawnie usuń dodatkowy znak CR (^ M, \ r, \ 015):lub, jeśli
file1
jest to ten z zakończeniami DOSźródło