Diff는 차이를보고하지만 두 줄은 동일합니다.


55

나는 2 파일을 diff-ed하고 얻었다

1c1
< 1
---
> 1

두 파일 모두 "1"만 포함했습니다. 이것은 어떻게 다른가요?


두 파일의 내용을 게시하십시오;)
Rinzwind

5
diff를 사용하는 경우 -u옵션을보다 사람이 읽을 수 있습니다.
Lekensteyn

@Rinzwind, 두 파일 모두 텍스트 1 만 포함하지만 더 자세한 내용을 보려면 pastebin.com/byiqdie1
Jiew Meng

죄송합니다. 내가 그렇게 할 때하지 않습니다. 다른 것이 있어야합니다. DO가 cp 1 2), (그래서 2 덮어 쓰기) 다음은 같은 있는지 100 % 나 될 수 있습니다
Rinzwind

2
vimdiff file1 file2? : D
dylnmc 2016

답변:


68

첫 번째 줄 : a추가, d삭제 및 c변경을 나타냅니다. 원본 파일의 줄 번호는이 문자 앞에 나타나고 수정 된 파일의 줄 번호는 문자 뒤에 나타납니다.

두 번째 줄 : with <파일은 파일 1에서 왔으며 파일 2와 다릅니다.

세 번째 줄은 디바이더입니다.

네 번째 줄 :와 줄 >은 파일 2에서 왔으며 파일 1과 다릅니다.

(이것이 보이면 =두 파일에서 줄이 동일하다는 것을 의미합니다)

그리고 문제는 공백이나 사람이 읽을 수없는 다른 문자 일 수 있습니다.

출력을 조작하는 몇 가지 옵션이 있습니다.

예:

rinzwind @ discworld : ~ $ 더 1 
테스트
test2
test3
rinzwind @ discworld : ~ $ 더 2
테스트
test2  
test3

상황에 맞는 형식 :

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 ****
  테스트
! test2
  test3
--- 1,3 ----
  테스트
! test2  
  test3

"!" 는 두 파일에 해당하는 줄 사이의 변경을 나타냅니다. "+"는 줄 추가를 나타내고, 공백은 변경되지 않은 줄을 나타냅니다. 패치 시작 부분에는 전체 경로와 타임 스탬프를 포함한 파일 정보가 있습니다. 각 덩어리의 시작 부분에는 파일의 해당 변경에 적용되는 줄 번호가 있습니다. 3 개의 별표 세트 사이에 나타나는 숫자 범위는 원본 파일에 적용되고 3 개의 대시 세트는 새 파일에 적용됩니다. 덩크 범위는 해당 파일의 시작 및 끝 줄 번호를 지정합니다.

통합 형식에 대한 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 @@
 테스트
-test2
+ test2  
 test3

형식은 컨텍스트 형식과 동일한 2 행 헤더로 시작합니다. 단, 원본 파일 앞에는 "---"가 있고 새 파일 앞에는 "+++"가 있습니다. 다음에는 파일의 줄 차이를 포함하는 하나 이상의 변경 덩어리가 있습니다. 변경되지 않은 상황에 맞는 줄 앞에는 공백 문자가 있고, 추가 줄 앞에는 더하기 부호가 있고, 삭제 줄 앞에는 빼기 부호가 있습니다.

몇 가지 유용한 옵션 :

-b 공백 양의 변화를 무시하십시오.

-w 모든 공백을 무시하십시오.

-B 빈 줄은 모두 무시하십시오.

-y 2 열로 출력됩니다.


숨겨진 문자가 있는지 어떻게 확인합니까? 숨겨진 문자를 무시하는 방법이 있습니까?
Jiew Meng

유용한 옵션을 넣었습니다 ( man diff; 에서 복사 )
Rinzwind

-b 플래그를 사용하면 작동합니다. 흠 내가 :)의 gedit에서 공백의 차이 볼 해달라고
Jiew 멩

@JiewMeng od -x1z두 파일 모두에서 실행 하고 od출력을 비교 합니다. 파일간에 숨겨진 차이점을 찾아야합니다.
lgarzo

6

나는 인쇄 할 수없는 문자가있는 파일을 비교할 때 od (octal dump)가 편리 하다는 것을 알았습니다 .

아래 예제에서, 원래 파일과 같은 파일 쌍을 만든 다음 원래 출력과 비교할 수 있습니다. 다음으로 몇 가지 다른 "od"출력을 비교합니다.

$ echo 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

1

나는 같은 문제가 있었고 명령을 사용하는 데 도움이되는 해결책을 찾았습니다.

dos2unix <file1> <file2>

그중 하나는 dos / windows 형식이고 다른 하나는 UNIX 형식 일 수 있습니다.

내가 이것을 한 후에 diff는 모두 좋았다!



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.