我有两个已排序的文件,每个文件只有一列。它们的前 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 样式的行结尾(CRLF 而不是普通的 LF)。前任。给定
$ 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