Gibt es eine bequeme Möglichkeit, doppelte oder nahezu doppelte Textblöcke in einer Datei zu identifizieren?
Ich möchte dies zum Identifizieren von Codeduplikationen verwenden. Es sieht so aus, als gäbe es Spezialprogramme mit dieser Fähigkeit, aber ich möchte mich nicht darauf einlassen.
Ich hoffe, es gibt ein Tool ähnlich dem Diff, das eine Art Diff "innerhalb einer Datei" ausführen kann. Noch besser wäre ein innerhalb einer einzigen Datei vimdiff.
text-processing
diff
vimdiff
Praxeolitisch
quelle
quelle
vimdiff
dir hier nicht?Antworten:
Wenn der zeilenweise Vergleich akzeptabel ist, wird im Folgenden angegeben, welche Zeilen in der Datei dupliziert werden
text
und wie oft jede Zeile angezeigt wird:Als Beispiel,
Mit den üblichen Unix-Tools könnte dies unter der Annahme, dass das Eingabetestformat nicht zu komplex ist, auf Vergleiche von Absatz zu Absatz oder Satz zu Satz erweitert werden.
Wiederholte Absätze finden
Angenommen, unsere Datei
text
enthält:Der folgende Befehl zeigt an, welche Absätze mehrmals vorkommen:
Dies wird verwendet
awk
, um den Text in Absätze aufzuteilen (durch Leerzeilen abgegrenzt), die Zeilenumbrüche in Leerzeichen umzuwandeln und dann die Ausgabe, eine Zeile pro Absatz, zum Sortieren und eindeutigen Zählen doppelter Absätze zu übergeben.Das Obige wurde mit GNU getestet
awk
. Bei anderenawk
kann sich die Methode zum Definieren von Leerzeilen als Absatz- (Datensatz-) Grenzen unterscheiden.quelle