Я думаю, что вы просто не отсортировали файлы. Это один из вариантов поведения, который можно получить на несортированном вводе:
$ cat file1
foo
bar
$ cat file2
bar
foo
$ $ diff file1 file2
1d0
< foo
2a2
> foo
Но, если вы отсортируете:
$ diff <(sort file1) <(sort file2)
$
Работа программы diff
заключается в том, чтобы сказать вам, идентичны ли два файла и, если нет, в чем они отличаются. Она не предназначена для поиска сходства между различными строками. Если строка X одного файла не совпадает со строкой X другого, значит, файлы не одинаковы. Неважно, содержат ли они совершенно одинаковую информацию, если эта информация организована по-разному, файлы считаются разными".