それぞれ1つの列のみを含む2つのソートされたファイルがあります。最初の45行はすべて数字の束であり、file1とfile2の数字は同じです。 diffコマンドを使用すると、同じ行が返されます。これは私が望むものとは正反対です。違いを見つけたいです。なぜこれが起こるのかという提案がある人はいますか? 2つのファイルの残りの行は2文字で始まり、その後に数字が続きます。 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
1つの可能な説明は、ファイルの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