Dateiinhalte vergleichen - Neue Sätze dann ausgeben

Dieses Thema im Forum "Programmieren allgemein" wurde erstellt von DÖXIE, 20.06.2016.

  1. DÖXIE

    DÖXIE Mitglied

    Dabei seit:
    30.11.2011
    Beiträge:
    25
    Zustimmungen:
    0
    Liebe Forumsmitglieder,
    ich benöte mal wieder Eure Hilfe:
    Ich möchte 2 Dateien vergleichen.
    Datei-1 hat z.B. 100 Datensätze mit mehreren Feldern
    Datei-2 hat z.B. 120 Datensätze mit den gleichen Feldern
    Ich möchte nun ermitteln, welches die 20 Datensätze sind, welche neu bei Datei-2 hinzu gekommen sind.
    Wo bei es mir völlig gleich ist, ob sich bei schon vorhandenen Sätzen im Datenfeld etwas geändert hat.
    Also nur die neuen Datensätze.
    Geht das ?
    Ich habe es mit dem "grep" versucht - aber leider ohne Erfolg.
    Für Eure Hilfe bin ich jetzt schon dankbar !!
    Gruß,
    Peter
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Programmer78, 20.06.2016
    Programmer78

    Programmer78 Foren As

    Dabei seit:
    28.11.2007
    Beiträge:
    92
    Zustimmungen:
    1
    versuche es mal mit dem Befehl diff
     
  4. DÖXIE

    DÖXIE Mitglied

    Dabei seit:
    30.11.2011
    Beiträge:
    25
    Zustimmungen:
    0
    Danke für den Hinweis.
    ich bin leider mit der Ausgabe leicht überfordert - Bitte um Nachsicht :brav:

    Ich versuch es mal besser zu beschreiben:
    Also - Datei-1
    1 2 3 4 5
    a b c d e

    Datei-2
    1 2 3 5 4
    a b c d e
    z z z z z

    Datei-3 soll jetzt nur "z z z z z" beinhalten.

    Ich habe folgenden Befehl verwendet: sdiff Datei-1 Datei-2 > Datei-3
    Unterschiede werden mir in Datei-3 mit "|"angezeigt - die zusätzlichen Sätze mit ">".
    Wie schaffe ich es, nur die mit ">" gekennzeichneten Sätze in Datei-3 abzulegen ?

    Vielen Dank !!
     
  5. #4 Programmer78, 21.06.2016
    Programmer78

    Programmer78 Foren As

    Dabei seit:
    28.11.2007
    Beiträge:
    92
    Zustimmungen:
    1
    geht bestimmt eleganter aber so auf die Schnelle geht es wenn du mit

    Code:
       ...     | grep \> | sed 's/^> //g'
    weiter machst. Dann noch in eine Datei schieben >
     
  6. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.053
    Zustimmungen:
    8
    Wenn Du nur die neu dazu gekommenen Zeilen haben willst:
    * Zähle die Zeilen in A
    * Zähle die Zeilen in B
    * Berechne die Differenz
    * Gib nur die letzten $Differenz Zeilen von A aus
     
  7. #6 DÖXIE, 21.06.2016
    Zuletzt bearbeitet: 21.06.2016
    DÖXIE

    DÖXIE Mitglied

    Dabei seit:
    30.11.2011
    Beiträge:
    25
    Zustimmungen:
    0
    vielen Dank !!
    das funktioniert schon ganz gut:
    diff Datei-1.dat Datei-2.dat | grep \> | sed 's/^> //g' >Datei-3.dat

    Allerdings ist das Ergebnis in Datei-3.dat:
    12354
    abcde
    zzzzz

    "abcde" sollte nicht dabei sein (weil gleich in Datei-1 und Datei-2)
    und 12354 eigentlich auch nicht (wäre aber nicht schlimm)

    Nachtrag:

    jetzt passt es. Ich hatte meine Testdateien mit dem Notepad++ erstellt.
    Diese habe ich jetzt nochmal gelöscht und mit dem vi erstellt.

    Ergebnis in Datei-3:
    12354
    zzzzz
     
  8. DÖXIE

    DÖXIE Mitglied

    Dabei seit:
    30.11.2011
    Beiträge:
    25
    Zustimmungen:
    0
    @marce
    Danke - aber leider hängen die neuen Sätze nicht unbedingt am Ende
     
  9. #8 DÖXIE, 21.06.2016
    Zuletzt bearbeitet: 21.06.2016
    DÖXIE

    DÖXIE Mitglied

    Dabei seit:
    30.11.2011
    Beiträge:
    25
    Zustimmungen:
    0
    Ich Dussel - ich habe zwei Befehle durcheinander geworfen.
    sdiff und diff

    Also nochmal von vorne:

    Ich habe folgenden Befehl verwendet: sdiff Datei-1.dat Datei-2.dat > Datei-3.dat (inhalt siehe oben)
    Unterschiede werden mir in Datei-3.dat mit "|"angezeigt - die zusätzlichen Sätze mit ">".
    Wie schaffe ich es, nur die mit ">" gekennzeichneten Sätze in Datei-3 abzulegen ?

    Wenn ich sdiff verwende, habe ich in meiner Datei-3 folgendes:
    12345 |12354
    abcde abcde
    >zzzzz

    (Das ">zzzzz" steht rechts. Wird hier nur falsch angezeigt.)

    Diese Ausgabe möchte ich verwenden, damit nacher NUR zzzzz in Datei-3.dat auftaucht.
    Ich brauche eigentlich nur die Sätze, welche mit dem ">" markiert sind.
    Ich möchte mich für meine Dussligkeit gleich mal entschuldigen :rolleyes:
     
  10. #9 Goodspeed, 21.06.2016
    Goodspeed

    Goodspeed Foren Gott
    Moderator

    Dabei seit:
    21.04.2004
    Beiträge:
    4.165
    Zustimmungen:
    1
    Ort:
    Dresden
    Sowas?
    Code:
    sdiff Datei-1.dat Datei-2.dat | grep \> | sed 's/^[ \t]*>[ \t]//g' > Datei-3.dat
     
  11. DÖXIE

    DÖXIE Mitglied

    Dabei seit:
    30.11.2011
    Beiträge:
    25
    Zustimmungen:
    0
    Das sieht schon sehr gut aus - Vielen Dank :)

    Ich habe das jetzt mal auf meine Originaldatei angewendet.
    Da wird leider nur ein kleiner Teil eines jeden Satzes angezeigt, obwohl mehrere Felder im Satz vorhanden sind. Satzlänge 1002 Zeichen laut Notepad++.
    Zeilenende ist in der Originaldatei: 0d 0a

    Gibt es da Besonderes zu beachten ?
     
  12. #11 Goodspeed, 21.06.2016
    Goodspeed

    Goodspeed Foren Gott
    Moderator

    Dabei seit:
    21.04.2004
    Beiträge:
    4.165
    Zustimmungen:
    1
    Ort:
    Dresden
    Gibt sdiff die Datensätze komplett aus?
     
  13. #12 hellfire, 21.06.2016
    Zuletzt bearbeitet: 21.06.2016
    hellfire

    hellfire Mitglied

    Dabei seit:
    25.05.2016
    Beiträge:
    48
    Zustimmungen:
    9
    Es werden alle Zeilen von grosse_datei ausgegeben die nicht in kleine_datei enthalten sind.

    Code:
    awk 'FNR==NR{A[$0];next} !($0 in A){print $0}'  kleine_datei grosse_datei
    
     
  14. DÖXIE

    DÖXIE Mitglied

    Dabei seit:
    30.11.2011
    Beiträge:
    25
    Zustimmungen:
    0
    @Goodspeed
    das ist eine berechtigte Frage: nein, leider auch schon nicht :rolleyes:
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. DÖXIE

    DÖXIE Mitglied

    Dabei seit:
    30.11.2011
    Beiträge:
    25
    Zustimmungen:
    0
    @hellfire
    vielen Dank - Das sieht auch gut aus. Besteht auch die Möglichkeit, die veränderten Sätze wegzulassen, dass also nur "zzzzz" auftaucht ?
     
  17. #15 Goodspeed, 22.06.2016
    Goodspeed

    Goodspeed Foren Gott
    Moderator

    Dabei seit:
    21.04.2004
    Beiträge:
    4.165
    Zustimmungen:
    1
    Ort:
    Dresden
    Schau Dir mal die Option -w von sdiff an.
    Aber ... ich bin mir grad nicht ganz sicher, ob das wirklich das ist, was Du willst ...
    Beispiel.
    Datei 1:
    Code:
    123
    abc
    Datei 2:
    Code:
    bla
    132
    abc
    xyz
    Nach Deiner Definition sind 'bla' und 'xyz' hinzugekommen und '123' wurde zu '132' verändert. Dies wird aber kein diff-Tool erkennen, da hier rein Zeichen/Zeichenketten verglichen werden.
     
Thema:

Dateiinhalte vergleichen - Neue Sätze dann ausgeben

Die Seite wird geladen...

Dateiinhalte vergleichen - Neue Sätze dann ausgeben - Ähnliche Themen

  1. Dateiinhalte multiplizieren

    Dateiinhalte multiplizieren: Hallo, ich möchte gern die Inhalte mehrerer Datein multiplizieren und das Ergebnis in eine Ergebnisdatei schreiben lassen. Beispiel:...
  2. Keine Dateiinhalte bei Freigebenen Ordnern

    Keine Dateiinhalte bei Freigebenen Ordnern: Hallo Leute ich habe seit paar tagen einen Samba Server auf meinen RHEL5 aufgesetzt und bin mit einem Windows Rechner darüber verbunden. Die...
  3. Ausgabe von dateiinhalten

    Ausgabe von dateiinhalten: Hallo, ich habe folgendes Problem: Ich möchte gerne aus Logfiles verschiedene Informationen exportieren. Dummerweise sind die Spalten nicht von...
  4. Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen

    Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen: Hallo, ich habe ein Verzeichnis, darin enthalten sind mehrere Dateien. Nun möchte ich alle Dateien (Parameter $1) gegen eine konstante Datei...
  5. Benötige Hilfe- Dateien vergleichen

    Benötige Hilfe- Dateien vergleichen: Hallo, für eine Arbeit an der Uni muss ich einige viele Bilder miteinander vergleichen, was ich gerne durch eine Automatisierung etwas...