Ähnliche Einträge in zwei Textdateien finden

TGoP

Lt. Junior Grade
Registriert
Nov. 2008
Beiträge
451
Hallo,

ich hab letztes Jahr schon mal vergeblich nach der Lösung eines ähnlichen Problems gesucht daher habe ich eigentlich wenig Hoffnung. Aber vielleicht habe ich ja Glück.

Szenario:
Ich hab hier zwei Textdateien.

In Textdatei A befinden sind rund 300 einzelne Einträge.
Als Beispiel sei mal genannt:
Dateiname123
Iso_001
datei5
UrlaubKR

In Textdatei B befinden sich rund 1000 Einträge.
Als Beispiel hier sei mal genannt
Akte54.doc
Dateiname123.bat
Iso_001_2010_12_24.iso
ExecuteGZS.exe
beispielurl.net/datei5_part1.cd
UrlaubKR.jpg

Wie man sieht kommen einige der Begriffe aus Datei A auch in Datei B vor. Allerdings nicht alle und schon gar nicht mit vollen Namen (z.B. fehlen die Endungen oder ein Teil des Namens).
Mein Ziel ist es nun herauszufinden welche der 300 Einträge aus Datei A, zumindest teilweise, auch in Datei B vorkommen.

Tools die Textdateien auf unterschiede überprüfen finde ich massenhaft, z.B. WinMerge. Die zeigen in meinem Fall nur leider alle Zeilen als unterschiedlich an (logisch). Gibt es denn kein Tool das quasi nach ähnlichen Begriffen (mit Hilfe von Wildcards?) sucht? Ich finde jedenfalls keins.

Bin für jede Hilfe dankbar.


P.S. Ich habe so gut wie keine Programmierkentnisse ;)
 
Wenn du die Dateien erstmal sortierst, funktioniert's mit WinMerge schonmal etwas besser.
 
TGoP schrieb:
Hallo,

ich hab letztes Jahr schon mal vergeblich nach der Lösung eines ähnlichen Problems gesucht daher habe ich eigentlich wenig Hoffnung. Aber vielleicht habe ich ja Glück.

Szenario:
Ich hab hier zwei Textdateien.

In Textdatei A befinden sind rund 300 einzelne Einträge.
Als Beispiel sei mal genannt:
Dateiname123
Iso_001
datei5
UrlaubKR

In Textdatei B befinden sich rund 1000 Einträge.
Als Beispiel hier sei mal genannt
Akte54.doc
Dateiname123.bat
Iso_001_2010_12_24.iso
ExecuteGZS.exe
beispielurl.net/datei5_part1.cd
UrlaubKR.jpg

Wenn die Dateien tatsächlich nur diese Ein-Wort-Einträge haben, dann die Texte in Excel importieren - dadurch erhält jedes Wort eine Zelle. Diese Zellen nach alphabetisch sortieren und das Ergebnis wieder als Text-Datei exportieren. Danach mit Winmerge oder Ultraedit vergleichen.
 
Ohne Excel gehts mit Notepad++ [chip.de] -> Datei -> Datei öffnen [Aufruf der Textdateien 1 + 2] -> Select all -> TextFX -> TextFX Tools -> Sort lines case sensitive -> dann öffnest Du mit WinMerge [chip.de] die zwei Dateien -> und löschst [?] die doppelten Einträge in Notepad++.


BS
 
Zuletzt bearbeitet: (Tippfehler korrigiert)
Crashkurs Excel VBA

- leere Excelmappe öffnen
- Copy&Paste deine Datei mit den 300 Einträgen ins 1. Excelblatt (engl. Sheet)
- Copy&Paste deine Datei mit den 1000 Einträgen ins 2. Excelblatt (lass alles zusammen in der 1. Spalte stehen)
- Drücke ALT+F11 um den VBA Editor zu öffnen
- kopiere die unten stehenden Codezeilen irgendwo dort rein
- setz den Cursor in diese Zeilen und drücke F5
- Tadaaa


Code:
Sub vergleich()
    For i = 1 To Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
    
        Set a = Sheets(1).Cells(i, 1)
        Set b = Nothing
        Set b = Sheets(2).Cells.Find(a, lookat:=xlPart)
        
        If Not b Is Nothing Then
            a.Interior.ColorIndex = 3
            b.Interior.ColorIndex = 3
            
            treffer = treffer + 1
            Sheets(1).Cells(a.Row, 2) = treffer
            Sheets(2).Cells(b.Row, 2) = treffer
        End If
    
    Next i
End Sub

Wenn teilweise Treffer gefunden wurden, dann wird die Zelle rot markiert in beiden Blättern und als Zusatzschmankerl noch ne Zahl in der 2. Spalte zur besseren Zuordnung eingetragen
 
Zuletzt bearbeitet:
Erstmal vielen Dank für eure Antworten.

Die vorgeschlagenen WinMerge Lösungen führen leider nicht zum Erfolg da WinMerge ausschließlich 100% übereinstimmende Einträge findet. Da die Einträge aber eben nicht vollkommen übereinstimmen ist das zum scheitern verurteilt.

nixdagibts' Lösung liest sich vielversprechend nur habe ich leider kein Excel. Ich hab versucht es in OpenOffice Calc nachzuvollziehen, nur leider ohne Erfolg.
 
Lad dir notepadd++ als portable Variante hier runter (wenn du es noch nicht hast)
http://www.portablefreeware.com/index.php?id=539

Lad dir das notepad++ Plugin "Compare" herunter und entpacke den Inhalt in den Unterordner /notepad++/plugins
http://sourceforge.net/projects/npp-plugins/files/ComparePlugin/

Jetzt gehts du erstmal so vor wie Mister Blue Sky es erklärt
Mister Blue Sky schrieb:
Datei -> Datei öffnen [Aufruf der Textdateien 1 + 2] -> Select all -> TextFX -> TextFX Tools -> Sort lines case sensitive ->

Nachdem du beide Testdateien alphabetisch sortiert hast, führst du den Vergleich aus mit dem Shortcut ALT+D

Das Ergebnis sieht dann so aus



Achte auf die gelben Bereiche in meinem Screenshot.
Die Farben kannst du in den Optionen des Plugins ändern.

Ich hoffe, damit ist der Fall geklärt.
 
Zuletzt bearbeitet:
Vielen Dank nixdagibts und auch Mister Blue Sky, die Lösung funktioniert. So ganz entspricht sie zwar noch nicht ganz meiner Wunschlösung aber immerhin ist es ein riesen Schritt in die richtige Richtung.

Kann ich die compare-Funktion vielleicht irgendwie dazu überreden die kleinere Datei bzw die Einträge darin nicht den Zeilen der größeren anzupassen? Die Einträge werden gegenüber gestellt wodurch riesen Lücken entstehen. Mir wäre es ohne diese aber lieber, sprich einfach nur vergleichen und farblich unterlegen?

Danke im voraus
 
Notepad > Erweiterungen > Compare > align matches: deaktivieren

PS: Bitte schau erst, ob du die Lösung selber findest und erwarte nicht von anderen, dass sie dir bei jedem Problem helfen. Diese Antwort hätte jeder gefunden, der 10 Sekunden danach gesucht hätte.
 

Ähnliche Themen

Zurück
Oben