Самый быстрый способ найти различия между двумя файлами в unix?

Я хочу найти разницу между двумя файлами, а затем поставить только различия в третьем файле. Я видел разные подходы, используя awk, diff и comm. Есть ли еще?

например Сравните два файла по очереди и создайте разницу в другом файле

например Скопировать разницу между двумя файлами в unix

Мне нужно знать, какой самый быстрый способ найти все различия и перечислить их в файле для каждого из нижеприведенных случаев -

Case 1 - file2 = file1 + extra text appended.
Case 2 - file2 and file1 are different.

Ответы

Ответ 1

Вы можете попробовать..

comm -13 <(sort file1) <(sort file2) > file3

или

grep -Fxvf file1 file2 > file3

или

diff file1 file2 | grep "<" | sed 's/^<//g'  > file3

или

join -v 2 <(sort file1) <(sort file2) > file3

Ответ 2

Другая опция:

sort file1 file2 | uniq -u > file3

Если вы хотите увидеть только дублирующиеся записи, используйте опцию "uniq -d":

sort file1 file2 | uniq -d > file3

Ответ 3

Вы также можете попытаться включить md5-хэш-суммы или аналогичные, чтобы определить, есть ли какие-либо различия вообще. Затем сравнивайте только файлы, имеющие разные хэши...

Ответ 4

Это будет работать быстро:

Случай 1 - Файл2 = Файл1 + добавлен дополнительный текст.

grep -Fxvf File2.txt File1.txt → File3.txt

Файл 1: 80 строк Файл 2: 100 строк Файл 3: 20 Линии