У меня есть два файла, которые выглядят одинаково для меня (включая конечные пробелы и символы новой строки), но diff все равно говорит, что они различаются. Даже когда я делаю diff -y
параллельное сравнение, линии выглядят совершенно одинаково. Выходные данные из diff - это целые 2 файла.
Есть идеи, что вызывает это?
sed -n l filename
. Если это не поможет, добавьте пример данных иdiff
выведите здесь.file
команда намекнуть вам о содержании файла, в том числе таких вещей , какASCII text, with CRLF line terminators
противASCII text
.Ответы:
Странно .. ты можешь попробовать
cmp
? Вы также можете использовать-b
опцию «».Страница man cmp - Сравнение двух файлов побайтно.
Это одна из приятных вещей в Unix / Linux .. так много инструментов :)
источник
-b
что дляignore changes in the amount of white space
.Могут ли различия быть вызваны окончаниями строк DOS или UNIX или чем-то подобным?
Что делать, если вы
hexdump
их? Это может показать различия более очевидно, например:источник
Пытаться:
-t
Опция заставитcat
показать специальные символы четко - например.^M
для CR,^I
для таб.Со страницы руководства (OS X):
источник
Мое первое предположение, которое оказывается подтвержденным, заключается в том, что файлы используют разные окончания строк. Это может быть какое-то другое различие в пробелах, например, наличие пробелов в конце (но вы, как правило, не получите это во многих строках) или различный отступ (табуляция или пробел). Используйте команду, которая печатает пробелы и управляющие символы в видимой форме, например
Вы можете подтвердить, что различия связаны только с окончаниями строк, сначала нормализовав их. У вас может быть
dos2unix
полезность; если нет, удалите лишний символ CR (^ M, \ r, \ 015) явно:или, если
file1
это тот, с окончаниями DOSисточник