나는 공백과 줄 바꿈을 포함하여 나와 동일하게 보이는 두 개의 파일을 가지고 있지만 diff는 여전히 다르다고 말합니다. 내가 할 경우에도 diff -y
측면 비교 나란히 선은 정확히 같은 모양. diff의 출력은 전체 2 개의 파일입니다.
무엇이 원인인지 아십니까?
file
위해이 명령은 ASCII text, with CRLF line terminators
vs 와 같은 파일 내용에 대한 힌트를 제공합니다 ASCII text
.
나는 공백과 줄 바꿈을 포함하여 나와 동일하게 보이는 두 개의 파일을 가지고 있지만 diff는 여전히 다르다고 말합니다. 내가 할 경우에도 diff -y
측면 비교 나란히 선은 정확히 같은 모양. diff의 출력은 전체 2 개의 파일입니다.
무엇이 원인인지 아십니까?
file
위해이 명령은 ASCII text, with CRLF line terminators
vs 와 같은 파일 내용에 대한 힌트를 제공합니다 ASCII text
.
답변:
이상한 .. 시도해 볼 수 cmp
있습니까? ' -b
'옵션도 사용할 수 있습니다 .
cmp man page- 두 파일을 바이트 단위로 비교합니다.
이것은 유닉스 / 리눅스에서 좋은 점 중 하나입니다. 너무 많은 도구 :)
-b
입니다 ignore changes in the amount of white space
.
DOS 대 UNIX 줄 끝 또는 이와 유사한 것 때문에 차이점이있을 수 있습니까?
당신이 hexdump
그들을 어떻게하면 ? 다음과 같은 차이점이 더 분명하게 나타날 수 있습니다.
hexdump -C file1 > file1.hex
hexdump -C file2 > file2.hex
diff file1.hex file2.hex
시험:
diff file1 file2 | cat -t
이 -t
옵션을 사용하면 cat
특수 문자가 명확하게 표시 됩니다 ( 예 : ^M
CR의 ^I
경우 탭의 경우
매뉴얼 페이지 (OS X)에서 :
-t Display non-printing characters (see the -v option), and display tab characters as `^I'. -v Display non-printing characters so they are visible. Control characters print as `^X' for control-X; the delete character (octal 0177) prints as `^?'. Non-ASCII characters (with the high bit set) are printed as `M-' (for meta) followed by the character for the low 7 bits.
확인 된 것으로 밝혀진 첫 번째 추측은 파일이 다른 줄 끝을 사용한다는 것입니다. 공백 뒤에 다른 공백이있을 수 있습니다 (예 : 후행 공백이 있지만 일반적으로 여러 줄에 표시되지 않음) 또는 들여 쓰기가 다릅니다 (탭 대 공백). 공백을 인쇄하고 다음과 같은 문자를 보이는 형태로 제어하는 명령을 사용하십시오.
diff <(cat -A file1) <(cat -A file2)
diff <(sed -n l file1) <(sed -n l file2)
차이점을 먼저 정규화하여 줄 끝과 만 관련이 있음을 확인할 수 있습니다. dos2unix
유틸리티 가있을 수 있습니다 . 그렇지 않은 경우 추가 CR (^ M, \ r, \ 015) 문자를 명시 적으로 제거하십시오.
diff <(tr -d '\r' <file1) <(tr -d '\r' <file2)
또는 file1
DOS 엔딩이있는 경우
tr -d '\r' <file1 | diff - file2
sed -n l filename
입니다. 도움이되지 않으면 데이터 예제를 추가하고diff
여기에 출력하십시오.