Различным различием в отчетах, но обеими строками является то же

Я различный редактор 2 файла и добрался

1c1
< 1
---
> 1

Оба файла, содержавшие всего "1". Как это отличается?

55
задан 12 October 2017 в 05:46

6 ответов

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.

68
ответ дан 22 November 2019 в 23:45

Я нахожу, что передозировка (восьмеричный дамп) удобна при сравнении файлов 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
6
ответ дан 22 November 2019 в 23:45

у меня была та же проблема, и я нашел решение, которое могло бы помочь, использовать команду:

dos2unix <file1> <file2>

один из них мог бы быть в формате DOS/окон и другом форматом UNIX

после того, как я сделал это, разность была всей пользой!

1
ответ дан 22 November 2019 в 23:45

Не уверенный, если это помогает с трудно найти пробельные символы, но это удобно для diffing: http://www.gnu.org/software/wdiff/

0
ответ дан 22 November 2019 в 23:45

http://www.gnu.org/software/diffutils/manual/html_node/Detailed-Unified.html#Detailed-Unified

Выше ссылки предоставляет более краткое и четкое описание.

0
ответ дан 22 November 2019 в 23:45

Вполне вероятно, что в одной из строк скрывается непечатаемый символ. Просто направьте вывод в cat -t, чтобы отобразить любые непечатаемые символы:

diff file1 file2 | cat -t
0
ответ дан 20 September 2020 в 10:21

Другие вопросы по тегам:

Похожие вопросы: