diff 명령이 Linux의 두 파일에서 동일한 정보를 반환하는 이유는 무엇입니까?

diff 명령이 Linux의 두 파일에서 동일한 정보를 반환하는 이유는 무엇입니까?

각각 하나의 열만 포함하는 두 개의 정렬된 파일이 있습니다. 처음 45줄은 모두 숫자 묶음이고, file1과 file2의 숫자는 동일합니다. diff 명령을 사용하면 동일한 줄이 반환되는데, 이는 내가 원하는 것과 정반대입니다. 차이점을 찾고 싶습니다. 왜 이런 일이 발생하는지에 대한 제안이 있는 사람이 있습니까? 두 파일의 나머지 줄은 두 글자로 시작하고 그 뒤에 숫자가 옵니다. diff 명령 결과:

1,45c1,45
< 1012
< 1051
< 1054
< 1107
< 115
< 1158
< 1242
< 1294
< 1388
< 1442
< 1607
< 1608
< 1650
< 1665
< 1732
< 1756
< 2045
< 2046
< 2059
< 2147
< 2219
< 2244
< 2272
< 2302
< 2355
< 2374
< 2376
< 2380
< 2434
< 2496
< 2612
< 2773
< 2864
< 295
< 2992
< 3061
< 3102
< 3222
< 3233
< 384
< 395
< 451
< 705
< 860
< 963
---
> 1012
> 1051
> 1054
> 1107
> 115
> 1158
> 1242
> 1294
> 1388
> 1442
> 1607
> 1608
> 1650
> 1665
> 1732
> 1756
> 2045
> 2046
> 2059
> 2147
> 2219
> 2244
> 2272
> 2302
> 2355
> 2374
> 2376
> 2380
> 2434
> 2496
> 2612
> 2773
> 2864
> 295
> 2992
> 3061
> 3102
> 3222
> 3233
> 384
> 395
> 451
> 705
> 860
> 963

답변1

한 가지 가능한 설명은 파일 중 하나(다른 파일은 아님)에 DOS/Windows 스타일 줄 끝(일반 LF 대신 CRLF)이 있다는 것입니다. 전임자. 주어진

$ printf '%d\n' {1..5} > file1
$ printf '%d\r\n' {1..5} > file2

그 다음에

$ diff file1 file2
1,5c1,5
< 1
< 2
< 3
< 4
< 5
---
> 1
> 2
> 3
> 4
> 5

이것이 문제라면 다음을 사용할 수 있습니다diff -w

   -w, --ignore-all-space
          ignore all white space

(캐리지 리턴 문자 포함):

$ diff -ws file1 file2
Files file1 and file2 are identical

관련 정보