Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16
  1. #1
    ist kein Terrorist Avatar von Terrorist
    Registriert seit
    21.09.2007
    Beiträge
    465

    Standard Textdateien vergleichen?

    Moin, habe folgendes Problem und suche hier Hilfe: Ich habe zwei Textdateien...
    In der einen steht beispielsweise:

    Hans spielt
    gerne mit seinem
    Nachbarn Karl
    der Nebenan wohnt.

    Nun habe ich in einer zweiten Textdatei folgendes stehen:

    spielt
    Nachbarn
    der

    Am Ende möchte ich folgendes erhalten:

    Hans spielt
    Nachbarn Karl
    der Nebenan wohnt.

    Wie muss ich das angehen? Habe bisher einige Programme gefunden die die Unterschiede anzeigen, ich brauche aber die
    Gemeinsamkeiten.

    Hat jemand von euch eine Idee? Bitte ausführlich beantworten... Schlage mich mit dem Problem schon ziemlich lange herum



  2. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    sp1nny (16.05.2010)

  3. #2
    Master of Porn Avatar von sp1nny
    Registriert seit
    28.05.2007
    Beiträge
    533

    Standard

    Zeile für Zeile bei beiden Textdateien durchgehen.
    Wenn in Zeile 1 von Textdatei 1 die Zeile 1 von Textdatei 2 enthalten ist, bleibt sie stehen. Ansonsten wird sie gelöscht.

    -> strstr - C++ Reference
    XMPP: sp1nny @ exploit.im
    MAIL: sp1nny @ tuta.io

    PGP:

    Wir müssen wissen — wir werden wissen.


  4. #3
    ist kein Terrorist Avatar von Terrorist
    Registriert seit
    21.09.2007
    Beiträge
    465

    Standard

    Hmm Danke, ich beherrsche leider kein C++



  5. #4
    Master of Porn Avatar von sp1nny
    Registriert seit
    28.05.2007
    Beiträge
    533

    Standard

    In VB / Delphi, whatever wirds sicherlich ähnliche Funktionen geben. Wenn nicht, schreibste dir halt kurz selber eine.

    MfG
    XMPP: sp1nny @ exploit.im
    MAIL: sp1nny @ tuta.io

    PGP:

    Wir müssen wissen — wir werden wissen.


  6. #5
    ist kein Terrorist Avatar von Terrorist
    Registriert seit
    21.09.2007
    Beiträge
    465

    Standard

    Wie soll ich mir sowas schreiben, wenn ich keinerlei Ahnung davon habe?^^
    Gibts denn keine andere Möglichkeit?



  7. #6
    Trojaner
    Registriert seit
    07.04.2010
    Beiträge
    77

    Standard

    WinDif ist ein Programm zum Beispiel was dazu in der Lage ist. Allerdings noch aus Windows 3.1 Zeiten soweit ich weiß...

  8. #7
    ist kein Terrorist Avatar von Terrorist
    Registriert seit
    21.09.2007
    Beiträge
    465

    Standard

    Mit WinDiff aka WinMerge bekommt man wohl nur die Unterschiede angezeigt...



  9. #8
    Fortgeschrittener
    Registriert seit
    04.05.2010
    Beiträge
    32

    Standard

    vim -diff file1 file2
    und dann mit regexpr alle non-matching lines entfernen.
    Genaueres musst du Googlen, sollte aber gut funktionieren!

  10. #9
    ist kein Terrorist Avatar von Terrorist
    Registriert seit
    21.09.2007
    Beiträge
    465

    Standard

    Okay das hat nicht wirklich geklappt.
    Bei mir kommt sowas hier raus:


    btw: habe Windows. Den Befehl -diff gibts irgendwie garnicht?

    Gibts denn keine Lösung?
    Ich probiere schon den ganzen Tag an WinMerge rum, doch wenn mir mal was angezeigt wird, dann nur die Unterschiede... Ich brauche aber die Gemeinsamkeiten -.-



  11. #10
    OpCodeKiddy Avatar von EBFE
    Registriert seit
    30.03.2009
    Beiträge
    442

    Standard

    Ja, dein Problem ist auch relativ speziell
    Außerdem beschreibst du nur einen Ausschnitt. Welches Verhalten sollte das Programm den überhaupt haben?

    Erste Datei: vollständiger Text
    Zweite Datei: Zeilen mit Wörtern
    Ergebnis:
    alle Zeilen aus der ersten Datei, in denen jeweil ein Wort aus der zweiten Datei vorkommt?

    Wie soll die Suche denn von statten gehen?
    1. Ein Wort aus der zweiten Datei nehmen
    2. die Zeile in der ersten Datei suchen, in der das Wort vorkommt,
    3. diese Zeile ins Ergebnis packen, mit dem nächsten Wort aus der zweiten Datei fortfahren ?
    3.1: Soll in der zweiten Datei erst ab der Zeile, wo das vorherige Wort vorkam, fortgefahren werden?
    3.2: Was soll passieren, wenn ein Wort nicht vorkommt?

    Was soll z.B mit Leerzeilen in der zweiten (oder ersten Datei) passieren?
    Oder falls z.B die erste Datei so ausschaut:
    Hello world
    ich bin
    ein Satz
    und die zweite:
    bin
    world
    satz
    soll das Ergebniss nun so auschauen:
    ich bin
    ein Satz
    oder eher so:
    Hello world
    ich bin
    ein Satz
    ?
    Falls du zu dem zweiten Fall tendierst:
    hier gibt es wieder weitere Fallen:
    ich bin eine Zeile
    und ich bin die zweite
    und überhaupt
    mit
    bin
    überhaupt
    sollte es dann
    ich bin eine Zeile
    und ich bin die Zweite
    und überhaupt
    ergeben? Oder doch nur ein Ergebnis:
    ich bin eine Zeile
    und überhaupt
    Und wie groß sind die Textdateien eigentlich? (also grob: paar MB oder doch im Gigabytebereich? )

    Fragen über Fragen
    Aber wenn du es genauer spezifiziert hättest, hätte auch bestimmt schon jemand
    ein kleines Script liefern können

    Edit: wie zum Beispiel dieses hier:
    Code:
    import sys
    
    def file_to_lines(name):
        with open(name, 'r') as f:
            result = f.read()
        return result.splitlines()
    
    def main():
        try:
            text = file_to_lines(sys.argv[1])
            words = file_to_lines(sys.argv[2])
            result = [line for word in words
                           for line in text
                           if word in line.split()]
            
            with open(sys.argv[3],'w') as f:
                f.write('\n'.join(result))
            
        except IOError:
            print "Aufruf:\n",\
                  "filediff.py original.txt words.txt result.txt\n"
    
    main()
    ist Python (und erfordert Python 2.6 zum Ausführen )
    einfach den code als "filediff.py" abspeichern und dann mit
    filediff.py original.txt words.txt result.txt
    aufrufen (original.txt = der vollständige Text, words.txt = eben die Wörter pro Zeile, result.txt = Datei, in der das Ergebis abgespeichert werden soll).
    Beispiel:
    Code:
    C:\>more text.txt
    Hans spielt
    gerne mit seinem
    Nachbarn Karl
    der Nebenan wohnt.
    
    C:\>more words.txt
    spielt
    Nachbarn
    der
    
    C:\>filediff.py text.txt words.txt result.txt
    
    C:\>more result.txt
    Hans spielt
    Nachbarn Karl
    der Nebenan wohnt.
    Geändert von EBFE (17.05.2010 um 00:01 Uhr)
    TrueCrypt/RAR/Zip Passwort vergessen und das Bruten dauert ewig? Oder brauchst du fein abgestimmte Wortlisten? Hilf dir selbst mit WLML - Word List Markup Language
    Gib Stoned/Mebroot/Sinowal und anderen Bootkits keine Chance: Anti Bootkit v 0.8.5

  12. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    br00_pwn (16.05.2010), sn0w (17.05.2010)

Seite 1 von 2 12 LetzteLetzte

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •