it-swarm.com.de

Der schnellste Weg, um Unterschiede zwischen zwei Dateien in Unix zu finden?

Ich möchte den Unterschied zwischen zwei Dateien finden und dann nur die Unterschiede in eine dritte Datei einfügen. Ich habe verschiedene Ansätze mit awk, diff und comm gesehen. Gibt es noch mehr?

z. Vergleichen Sie zwei Dateien zeilenweise und erzeugen Sie die Differenz in einer anderen Datei

eg. Unterschiede zwischen zwei Dateien in Unix kopieren

Ich muss wissen, wie der schnellste Weg ist, alle Unterschiede zu finden und sie für jeden der folgenden Fälle in einer Datei aufzuführen 

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

Du könntest es versuchen.. 

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

oder

grep -Fxvf file1 file2 > file3

oder

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

oder

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

Andere Option:

sort file1 file2 | uniq -u > file3

Wenn Sie nur die doppelten Einträge anzeigen möchten, verwenden Sie die Option "uniq -d":

sort file1 file2 | uniq -d > file3
11
pron

Sie können auch versuchen, md5-Hash-Summen einzubeziehen oder ähnliches, um festzustellen, ob überhaupt Unterschiede bestehen. Vergleichen Sie dann nur Dateien mit unterschiedlichen Hashwerten ...

1
P_M

Das wird schnell gehen:

Fall 1 - Datei2 = Datei1 + zusätzlicher Text angehängt.

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

Datei 1: 80 Zeilen Datei 2: 100 Zeilen Datei 3: 20 Zeilen

0
James Bond 86