Sie müssen wahrscheinlich Ihre Anforderungen ein wenig mehr erklären. Es ist jedoch sehr wahrscheinlich, dass Sie mit dem Befehl diff (mit ein wenig Hilfe von sort und / oder grep) machen können, was Sie wollen.
Nehmen wir an, Sie haben zwei Dateien: a.properties und b.properties
Wenn Sie nur wissen möchten, ob die Dateien in irgendeiner Weise anders sind, können Sie
verwenden %Vor%Sie erhalten keine Ausgabe, wenn sie identisch sind oder eine Liste von Unterschieden.
Wenn Sie einen Vergleich auf einer semantischeren Ebene wünschen, dh wenn die beiden Sätze von Eigenschaften identisch sind, dann müssen Sie ein bisschen mehr tun. Die Dateien können sich textlich unterscheiden, bedeuten aber dasselbe für Java-Programme, die sie verwenden. Zum Beispiel können die Eigenschaften in einer anderen Reihenfolge auftreten. Es kann Leerzeilen, andere Leerzeichen und Kommentare geben.
Wenn das der Fall ist, interessiert es dich, ob die Kommentare identisch sind? Sie werden die Operation Ihres Programms nicht beeinflussen, aber sie haben eine Bedeutung (und einen Wert für diejenigen, die die Datei lesen). Wenn es Ihnen egal ist, streichen Sie sie aus.
Sie interessieren sich wahrscheinlich nicht für Leerzeilen, da sie keine Bedeutung haben.
Sie müssen auch den folgenden Fall behandeln:
%Vor%Erneut, textuell unterschiedlich (beachten Sie die Leerzeichen um den equals), haben aber in Java dieselbe Bedeutung.
Beginnen wir einfach, nehmen wir an, dass die Eigenschaften in der gleichen Reihenfolge auftreten.
Leerzeilen ignorieren:
%Vor%Behandeln Sie zufällige Leerzeichen (z. B. um das Gleichheitszeichen)
%Vor%Kombiniere all das:
%Vor%Kommentare ausblenden:
%Vor%Erlaube Eigenschaften in einer anderen Reihenfolge, strip Kommentare:
%Vor% comm
ist ein nützliches Dienstprogramm. Es kann Ihnen sagen, was in Datei1 und nicht in Datei2 ist, was in Datei2 und nicht in Datei1 ist und was zwischen den beiden Dateien gemeinsam ist. Es erfordert, dass die zwei Dateien zuerst sortiert werden.
Ich habe @antispams PropDiff geantwortet, da es genau das zu sein scheint, was du verlangst.
Versuchen Sie, das diff-Programm zu verwenden, rufen Sie "diff / path / to / first / Datei / Pfad / zu / Sekunde / Datei" auf und cat a grep sie. Für spezielle Verwendungen von diff (wenn Sie etwas besonderes brauchen), versuchen Sie, man diff.
zu suchen Hängt davon ab, was Sie wollen. Ist ein anderer Kommentar ein Unterschied? Leerzeichen? Auftrag? Ich denke am einfachsten wäre ein kleines grooviges Skript. Ist das eine Option? Wenn nicht, stellen Sie sicher, dass Kommentare und Whitespaces entfernt werden und sortieren Sie die Ausgabe, bevor Sie diff
BEARBEITEN: Während es möglich ist, Diff Leerzeichen zu ignorieren, bin ich mir nicht sicher, ob dies das ist, was Sie wollen, da Leerräume Teil eines Eigenschaftswertes sein könnten