Eint Unixbefehl mit dem man viele Texdateien auf einmal miteinander vergleichen kann

S

SkYdRaXx

Hi ,
ich suche einen Unixbefehl oder ein Unixtool mit dem man verschiedene txt files
miteinander vergleichen kann. Folgendes Szenario:

Ich habe so 30-40 Texte im txt Format und muss pruefen welche Saetze innerhalb dieser Menge an Files gleich sind (Es ist ein Linguistikprojekt)

Und in welcher Files die gleichen stehen

Ich habe es mit diff vesucht aber mit diff kann ich ja nicht 40 files gleichzeitig abfragen und mit diff3 maximal ja 3.

Gibt es irgendeine Idee??

Es wäre wirklich wichtig ich bin mit meinem Latein am Ende.

LG
Timo
 
Hi ,
ich suche einen Unixbefehl oder ein Unixtool mit dem man verschiedene txt files
miteinander vergleichen kann. Folgendes Szenario:

Ich habe so 30-40 Texte im txt Format und muss pruefen welche Saetze innerhalb dieser Menge an Files gleich sind (Es ist ein Linguistikprojekt)

Und in welcher Files die gleichen stehen

Ich habe es mit diff vesucht aber mit diff kann ich ja nicht 40 files gleichzeitig abfragen und mit diff3 maximal ja 3.

Gibt es irgendeine Idee??

Es wäre wirklich wichtig ich bin mit meinem Latein am Ende.

LG
Timo

Ein einzelner Befehl wird da nicht helfen. Aber man könnte sich z.B. die Dateien einzeln hernehmen und dann für jeden Satz in der ersten Datei prüfen, ob dieser auch in allen anderen Dateien vorkommt. Wenn ja, wird der Satz in eine Ergebnis-Textdatei gepackt. Und hinter den Satz mit Kommatrennung die Dateinamen, in denen der Satz auch vorkommt. So wird dann jede Datei Satz für Satz mit den anderen Dateien vergleichen, wobei der Aufwand zum Ende hin geringer wird, weil ja die Sätze, die schon in der Ergebnisdatei stehen, nicht nochmal in allen Dateien gesucht werden müssen. Nur so ein Denkanstoß...

Schönen Gruß,
 
Bau dir einfach ein Shell-Skript für diff, dann hast du das in einem Befehl.
 
Perl? Dateistruktur?

Edit (mal ganz oben...): satisfied schlägt im Grunde dasselbe vor, nur textbasiert. Habe ich zu spät begriffen, ist mir fast sympathischer. Ich lasse das hier trotzdem mal stehen, kann nicht schaden.. So wie ich das Array vollpumpen wollte, schlägt er vor, es einfach in einen Text zu schreiben, und das wär's ja schon.

Ich habe so 30-40 Texte im txt Format und muss pruefen welche Saetze innerhalb dieser Menge an Files gleich sind (Es ist ein Linguistikprojekt)
Hallo Timo,

wie stehen die Sätze denn in den Texten? 1 Zeile = 1 Satz? Oder gehen die über mehrere Zeilen (auch zum Teil)?

Mir schwebt gerade vor, das in Perl zu lösen, aber dazu wäre interessant, woran man überhaupt merkt, wann ein Satz endet. Neue Zeile? Fließtext? Satzzeichen?

Mir schwebt vor, eine Datei zu öffnen (deren Namen in eine Variable packen), all ihre Zeilen/Sätze (Zeilen ist leichter) in ein Array zu tun, dann reihenweise in einer Schleife alle anderen Dateien in einen String zu laden (dabei fällt in jedem Durchgang eine Variable mit deren Namen an) und in einer zweiten Schleife jedes Element aus dem Array in dem String zu suchen. Paßt der String, wird er in ein zweites Array geschrieben, das 2 Dimensionen hat: 1. Feld ist der String, im zweiten steht ein Array, das alle Dateinamen sammelt, in denen der steht. Ist der String neu, kommt ein Element dazu, ist er schon im Array (Feld 1), kommt hinten der Dateiname dran.

Diese Prozedur läuft ein mal über alle Dateien. Am Ende hast du eine Liste mit allen Strings, die mehrfach vorkommen und für jeden, in welchen Dateien das war.

Das ist ein sehr grobes Brainstorming und hoffentlich nicht zu wirre beschrieben (außerdem denke ich manchmal um die Ecke und das ginge kürzer). Mich würde sogar reizen, das Script zu bauen, aber ich stehe zeitlich nicht so zur Verfügung, ich weiß nicht, wie eilig das ist. Aber das hier wäre meine erste Idee, vielleicht kommt von woanders noch ne bessere... :think:
 
Zuletzt bearbeitet:
Hallo

Hier stellt sich mir die Frage, ob du den Unterschied selbst wissen willst, oder nur welche Dateien identisch (exakt gleich) sind.
Im zweiten Fall genügt es ein md5sum File uber alle Dateien zu erstellen, und die Einträge auf Gleichheit auszuwerten.
Das ist weit schneller.

Gruß Wolfgang
 

Ähnliche Themen

Zeile für Zeile vergleichen ??? mit while und readline?

Zurück
Oben