Я разделил 2 файла и получил
1c1
< 1
---
> 1
Оба файла содержат только «1». Как это отличается?
Я разделил 2 файла и получил
1c1
< 1
---
> 1
Оба файла содержат только «1». Как это отличается?
1-я строка: a
означает добавление, d
для удаленных и c
для изменений. Номера строк исходного файла появляются до того, как эти буквы появятся после того, как эти буквы появятся после буквы.
Вторая строка: строка с <
из файла 1 и отличается от файла 2.
Третья строка - это разделитель.
4-я строка: строка с >
из файла 2 и отличается от файла 1.
(Если вы когда-либо видели =
, это означает, что строки одинаковы в обоих файлах)
И ваша проблема может быть пробелами или другими нечитаемыми для человека символами: они также вызывают разницу.
Есть несколько вариантов управления выводами.
Пример:
[email protected]:~$ more 1 test test2 test3 [email protected]:~$ more 2 test test2 test3
контекстный формат:
[email protected]:~$ 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 "!" представляет собой изменение между строками, которые соответствуют в двух файлах. «+» Представляет добавление строки, в то время как пустое пространство представляет собой неизмененную линию. В начале патча находится информация о файле, включая полный путь и отметку времени. В начале каждого столбца находятся номера строк, которые применяются для соответствующего изменения файлов. Диапазон номеров, появляющийся между наборами из трех звездочек, относится к исходному файлу, а к новому файлу применяются три символа. Диапазоны hunk определяют начальные и конечные номера строк в соответствующем файле.
Расширение комментария Лекенштейна об унифицированном формате:
[email protected]:~$ 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-х столбцах.
Я нахожу od (восьмеричный дамп) для сравнения файлов с непечатаемыми символами (в частности, файлы, которые diff решают, являются «двоичными» и, таким образом, говорят только о том, что они отличаются). Р>
В приведенном ниже примере я создаю пару файлов, которые могут быть похожими на исходные, затем выполните разницу с исходным выходом; Затем я выполняю различие на нескольких разных выходах «od».
$ эхо 1 > 1
$ echo "1" > 2
$ diff 1 2
1c1
< 1
- ---
> 1
$ od -c 1 > 1.od
$ od -c 2 > 2.od
$ diff 1.od 2.od
1,2c1,2
< 0000000 1 \n
< 0000002
---
> 0000000 1 \n
> 0000003
$ od -Ax -c -t x1 1 > 1.od
$ od -Ax -c -t x1 2 > 2.od
$ diff 1.od 2.od
1,3c1,3
< 000000 1 \n
< 31 0a
< 000002
---
> 000000 1 \n
> 31 20 0a
> 000003
У меня была та же проблема, и я нашел решение, которое могло бы помочь, используйте команду:
dos2unix
<file1> <file2>
один из них может быть в формате dos / windows, а другой - в формате UNIX
после того, как я сделал это, все было хорошо!
Не уверен, что это помогает с трудными для поиска пробельными символами, но это удобно для различения: Ссылка
Выше ссылка содержит более сжатое и четкое описание.