опубликовать содержимое обоих файлов, пожалуйста;)
Rinzwind
5
Если вы используете diff, -uопция может быть более удобочитаемой.
Лекенштейн
@Rinzwind, оба файла содержат только текст 1, но если вы хотите увидеть больше, смотрите pastebin.com/byiqdie1
Jiew Meng
Сожалею. Это не когда я это делаю. Там должно быть что-то другое. Сделайте a cp 1 2(перезаписайте 2), и тогда вы будете на 100% уверены, что они одинаковы;)
Rinzwind
2
vimdiff file1 file2? : D
dylnmc
Ответы:
68
1-я строка: aобозначает добавленное, dудаленное и cизмененное. Номера строк исходного файла появляются перед этими буквами, а номера измененного файла - после буквы.
2-я строка: строка с <файлом 1 и отличается от файла 2.
3-я строка - это разделитель.
4-я строка: строка с >файлом 2 и отличается от файла 1.
(Если вы когда-либо видите, =это означает, что строки в обоих файлах одинаковы)
И вашей проблемой могут быть пробелы или другие нечитаемые человеком символы: они тоже вызывают разницу.
Есть несколько вариантов манипулирования выводом.
Пример:
rinzwind @ discworld: ~ $ больше 1
контрольная работа
test2
test3
rinzwind @ discworld: ~ $ больше 2
контрольная работа
test2
test3
"!" представляет изменение между строками, которые соответствуют в двух файлах. «+» Представляет добавление строки, в то время как пробел представляет неизменную строку. В начале патча находится информация о файле, включая полный путь и отметку времени. В начале каждого блока находятся номера строк, которые применяются для соответствующего изменения в файлах. Диапазон номеров, появляющийся между наборами из трех звездочек, применяется к исходному файлу, в то время как наборы из трех тире применяются к новому файлу. Диапазоны блоков указывают номера начальной и конечной строк в соответствующем файле.
Расширение комментария Лекенштейна об унифицированном формате:
Формат начинается с того же двухстрочного заголовка, что и контекстный формат, за исключением того, что исходному файлу предшествует «---», а новому файлу предшествует «+++». Далее следует один или несколько блоков изменений, которые содержат различия строк в файле. Неизменным контекстным строкам предшествует пробел, строкам добавления предшествует знак плюс, а линиям удаления предшествует знак минус.
Несколько полезных опций:
-b Игнорировать изменения количества пустого пространства.
Как проверить, есть ли скрытые символы? Есть ли способ игнорировать скрытые символы (может быть, исключая символы новой строки и табуляции?) Я полагаю, что большинство скрытых символов являются случайными?
Jiew Meng
Я вставил несколько полезных опций (скопировано с man diff;))
Rinzwind
Я заметил, что использование флага -b работает. Хм, я не вижу разницы в пробелах в gedit :)
Jiew Meng
@JiewMeng Запустите od -x1zоба файла и сравните odвывод. Это должно найти любые скрытые различия между файлами.
января
6
Я считаю, что od (восьмеричный дамп) удобен при сравнении файлов с непечатаемыми символами (в частности, файлы, которые diff определяет как «двоичные» и, таким образом, сообщают только о том, что они различаются).
В приведенном ниже примере я создаю пару файлов, которые могут быть похожи на исходные, затем делаю различие с исходным выводом; затем я делаю diff на пару разных "од" выходов.
-u
опция может быть более удобочитаемой.cp 1 2
(перезаписайте 2), и тогда вы будете на 100% уверены, что они одинаковы;)vimdiff file1 file2
? : DОтветы:
1-я строка:
a
обозначает добавленное,d
удаленное иc
измененное. Номера строк исходного файла появляются перед этими буквами, а номера измененного файла - после буквы.2-я строка: строка с
<
файлом 1 и отличается от файла 2.3-я строка - это разделитель.
4-я строка: строка с
>
файлом 2 и отличается от файла 1.(Если вы когда-либо видите,
=
это означает, что строки в обоих файлах одинаковы)И вашей проблемой могут быть пробелы или другие нечитаемые человеком символы: они тоже вызывают разницу.
Есть несколько вариантов манипулирования выводом.
Пример:
контекстный формат:
"!" представляет изменение между строками, которые соответствуют в двух файлах. «+» Представляет добавление строки, в то время как пробел представляет неизменную строку. В начале патча находится информация о файле, включая полный путь и отметку времени. В начале каждого блока находятся номера строк, которые применяются для соответствующего изменения в файлах. Диапазон номеров, появляющийся между наборами из трех звездочек, применяется к исходному файлу, в то время как наборы из трех тире применяются к новому файлу. Диапазоны блоков указывают номера начальной и конечной строк в соответствующем файле.
Расширение комментария Лекенштейна об унифицированном формате:
Формат начинается с того же двухстрочного заголовка, что и контекстный формат, за исключением того, что исходному файлу предшествует «---», а новому файлу предшествует «+++». Далее следует один или несколько блоков изменений, которые содержат различия строк в файле. Неизменным контекстным строкам предшествует пробел, строкам добавления предшествует знак плюс, а линиям удаления предшествует знак минус.
Несколько полезных опций:
-b
Игнорировать изменения количества пустого пространства.-w
Игнорировать все пустое пространство.-B
Игнорировать все пустые строки.-y
вывод в 2 столбца.источник
man diff
;))od -x1z
оба файла и сравнитеod
вывод. Это должно найти любые скрытые различия между файлами.Я считаю, что od (восьмеричный дамп) удобен при сравнении файлов с непечатаемыми символами (в частности, файлы, которые diff определяет как «двоичные» и, таким образом, сообщают только о том, что они различаются).
В приведенном ниже примере я создаю пару файлов, которые могут быть похожи на исходные, затем делаю различие с исходным выводом; затем я делаю diff на пару разных "од" выходов.
$ echo 1> 1
$ echo "1"> 2
$ diff 1 2
$ od -c 1> 1.od
$ od -c 2> 2.od
$ diff 1.od 2.od
$ od -Ax -c -t x1 1> 1.od
$ od -Ax -c -t x1 2> 2.od
$ diff 1.od 2.od
источник
У меня была та же проблема, и я нашел решение, которое может помочь, используйте команду:
один из них может быть в формате DOS / Windows, а другой формат UNIX
после того, как я сделал это, различия были все хорошо!
источник
Не уверен, поможет ли это с трудом найти пробельные символы, но это удобно для сравнения: http://www.gnu.org/software/wdiff/
источник
http://www.gnu.org/software/diffutils/manual/html_node/Detailed-Unified.html#Detailed-Unified
Выше ссылка обеспечивает более краткое и четкое описание.
источник