Я различный редактор 2 файла и добрался
1c1
< 1
---
> 1
Оба файла, содержавшие всего "1". Как это отличается?
1-я строка: a
обозначает добавленный, d
для удаленного и c
для измененного. Номера строки исходного файла появляются, прежде чем эти буквы и те из измененного файла появляются после буквы.
2-я строка: строка с <
из файла 1 и отличаются из файла 2.
3-я строка является делителем.
4-я строка: строка с >
из файла 2 и отличаются из файла 1.
(Если Вы когда-нибудь видите =
это означает, что строки являются тем же в обоих файлах),
И Вашей проблемой могли бы быть пробелы или другие нечеловекочитаемые символы: они инициировали различие также.
Существуют некоторые опции управлять выводом.
Пример:
rinzwind@discworld:~$ more 1 test test2 test3 rinzwind@discworld:~$ more 2 test test2 test3
формат contexted:
rinzwind@discworld:~$ diff -c 1 2 *** 1 2011-08-13 17:05:40.433966684 +0200 --- 2 2011-08-13 17:11:24.369966629 +0200 *************** *** 1,3 **** test ! test2 test3 --- 1,3 ---- test ! test2 test3
A"!" представляет изменение между строками, которые соответствуют в этих двух файлах. "+" представляет добавление строки, в то время как пробел представляет неизменную строку. В начале патча информация о файле, включая полный путь и метку времени. В начале каждого ломтя номера строки, которые применяются к соответствующему изменению в файлах. Диапазон числа, появляющийся между наборами трех звездочек, относится к исходному файлу, в то время как наборы трех тире относятся к новому файлу. Диапазоны ломтя указывают запуск и окончание номеров строки в соответствующем файле.
Подробно останавливаясь на комментарии Lekensteyn об унифицированном формате:
rinzwind@discworld:~$ diff -u 1 2 --- 1 2011-08-13 17:05:40.433966684 +0200 +++ 2 2011-08-13 17:11:24.369966629 +0200 @@ -1,3 +1,3 @@ test -test2 +test2 test3
Формат запускается с того же заголовка с двумя строками как формат контекста, за исключением того, что исходному файлу предшествует "---", и новому файлу предшествует "+++". После этого, один или несколько изменяет скрягу, которые содержат различия в строке в файле. Неизменным, контекстным строкам предшествует пробел, дополнительным строкам предшествует знак "плюс", и строкам удаления предшествует знак "минус".
Некоторые полезные опции:
-b
Проигнорируйте изменения в количестве пробела.
-w
Проигнорируйте весь пробел.
-B
Проигнорируйте все пустые строки.
-y
вывод в 2 colums.
Я нахожу, что передозировка (восьмеричный дамп) удобна при сравнении файлов w/непечатаемые символы (особенно файлы, которые решает разность, являются "двоичными", и таким образом говорит Вам только, что они действительно отличаются).
В примере ниже, я создаю пару файлов, которые могли быть похожими на исходные, затем сделайте разность с исходным выводом; затем я делаю разность на нескольких различных выводах "передозировки".
$ отзываются эхом 1> 1
$ отзываются эхом "1"> 2
Разность $1 2
1c1
< 1
- ---
> 1
-c 1 передозировки $> 1.od
-c 2 передозировки $> 2.od
Разность $1.od 2.od
1,2c1,2
< 0000000 1 \n
< 0000002
---
> 0000000 1 \n
> 0000003
Передозировка $ - топор-c-t x1 1> 1.od
Передозировка $ - топор-c-t x1 2> 2.od
Разность $1.od 2.od
1,3c1,3
< 000000 1 \n
< 31 0a
< 000002
---
> 000000 1 \n
> 31 20 0a
> 000003
у меня была та же проблема, и я нашел решение, которое могло бы помочь, использовать команду:
dos2unix
<file1> <file2>
один из них мог бы быть в формате DOS/окон и другом форматом UNIX
после того, как я сделал это, разность была всей пользой!
Не уверенный, если это помогает с трудно найти пробельные символы, но это удобно для diffing: http://www.gnu.org/software/wdiff/
http://www.gnu.org/software/diffutils/manual/html_node/Detailed-Unified.html#Detailed-Unified
Выше ссылки предоставляет более краткое и четкое описание.
Вполне вероятно, что в одной из строк скрывается непечатаемый символ. Просто направьте вывод в cat -t
, чтобы отобразить любые непечатаемые символы:
diff file1 file2 | cat -t