Gibt es ein Tool zum Messen des Prozentsatzes der Dateidifferenz?


5

Ich möchte zwei Textdateien vergleichen. Normalerweise kann ich nur verwenden diff die beiden Dateien zu vergleichen, um die Unterschiede zu sehen. Das ist großartig, außer dass ich mich mehr um die prozentuale Differenz der beiden Dateien kümmere.

Zum Beispiel:

File A:
    banana
    TESTING

File B:
    TESTING

In diesem Fall wäre das Ergebnis eine Differenz von 50%. Ich habe einen Blick darauf geworfen wdiff, und es funktioniert meistens, mit der Ausnahme, dass Elemente Wort für Wort betrachtet werden (tatsächlich kann ich das obige Ergebnis erhalten, indem ich tue wdiff -s filea fileb ).

Gibt es ein Tool, das die prozentuale Differenz der Dateien auf Zeichen- / Byte-Ebene angibt?

Antworten:


3

Ein zeichenweiser Vergleich zweier Textdateien ist effektiv a Levenshtein Entfernung Berechnung. Es gibt kein gängiges eigenständiges Programm in Linux, das diese Berechnung durchführt, aber es gibt einige Bibliotheksfunktionen (ich weiß, dass PHP eine hat) und jede Menge Beispielcode online für diese Berechnung.

Eine weitere kleine Einschränkung ist, dass der Levenshtein-Abstand genau die Anzahl der Änderungen zwischen zwei Zeichenfolgen ist. Wenn Sie also nach einem Prozentsatz suchen, müssen Sie den berechneten Abstand normalisieren. Das Teilen durch den Mittelwert der Länge der beiden Zeichenfolgen (Größe der Textdateien) ist eine weit verbreitete Normalisierung.


0

Versuchen Sie, den Ausgang zu leiten, wenn er sich von dem unterscheidet wc Befehl. Es gibt aber mehrere Möglichkeiten -l gibt Ihnen wahrscheinlich eine anständige Zählung der Anzahl der geänderten Zeilen. Da diff Ausgaben vor & amp; Nach Zeilen und einigen anderen Formatierungen müssen Sie möglicherweise das Ergebnis durch diesen Faktor teilen und dieses dann über das Ergebnis der gesamten Dateilänge in Zeilen setzen. wc -l


1
diff -u 0 entfernt den Kontext
Lazy Badger
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.