
Ich suche nach einer Anwendung, die zwei Dateien vergleicht und dabei alle Leerzeichen ignoriert, also zum Beispiel:
class foo {
bar
spaz
}
ist gleichbedeutend mit
class foo{bar spaz}
oder auch
classfoo {
barspaz}
aber nicht
classfoo {
spazspaz
}
d. h. es würde mir zeigen, dass spaz
im vorherigen Beispiel der Platz von bar
in einem der anderen Beispiele eingenommen wurde. Es müssen nur 2 Dateien verglichen werden.
- Es kann ein Windows- oder Linux/Unix/Posix-kompatibles Dienstprogramm sein
- Ich habe den Lin/Unix
diff -w
-Befehl ausprobiert, er ignoriert Leerzeichen nur, wenn der Unterschiedpro Zeileist Leerzeichen. Ich sehe keine Möglichkeit,totalLeerzeichen ignorieren. - Ich habe auch UECompare oder Ultracompare ausprobiert, ein kostenpflichtiges Vergleichsprogramm für Windows.
Antwort1
Suchen Sie nach etwas wie dem tr
Befehl? Hier sind diemanpages. Soweit ich das beurteilen kann, ist es in msysgit
, cygwin
, und enthalten.gnuwin32 tools
Sie können alle Leerzeichen vor dem Differenzieren entfernen, indem Sie etwa Folgendes tun:
tr --delete '[:space:]' <filename.txt
Sie können dann die Ausgabe dieses Befehls weiterleiten diff
und ihn ohne Leerzeichen ausführen lassen.
Ich habe beispielsweise eine Datei mit dem Namen HelloWorldApp.java
. Ich zeige Ihnen, wie tr
sie verarbeitet wird:
C:\temp>cat HelloWorldApp.java
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); // Display the string.
}
}
C:\temp>tr -d '[:space:]' <HelloWorldApp.java
classHelloWorldApp{publicstaticvoidmain(String[]args){System.out.println("HelloWorld!");//Displaythestring.}}
Antwort2
Obwohl linienorientiert, diffkönntedazu gebracht werden, das zu tun, was verlangt wird. Grob gesagt könnten Sie diff -w ausführen und dann die Diff-Ausgabe nachbearbeiten. Es könnte sich die Diff-Ausgabe ansehen und verschiedene Zeilenpaare zusammenfügen, um zu sehen, ob sie (jetzt) mit der Zeile in der anderen Datei übereinstimmen.
Scheint, als wäre es O(n^2) oder etwas anderes Unangenehmes, aber es wäre trotzdem sehr hilfreich, wenn es sich selbst auf (sagen wir) kein Join, Join von 2 Zeilen, Join von 3 Zeilen in Datei 1 X kein Join, Join von 2 Zeilen, Join von 3 Zeilen in Datei 2 in einem gleitenden „Fenster“ der Diff-Ausgabe beschränken würde. (wobei X ~ „Kreuzprodukt“ ist)
Tatsächlich scheint es sich um eine Aufgabe zu handeln, die ein Perl-Diff-Ausgabe-Nachbearbeitungsskript in wenigen Stunden Arbeit erledigen könnte (abhängig von Ihren (Perl-)Programmierkenntnissen).
Vielleicht, wenn ich bei der Arbeit eine Aufgabe habe, die ich eigentlich nicht machen möchte ... :-)