Zwei Dateien vergleichen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von combat, 16.12.2008.

  1. combat

    combat Grünschnabel

    Dabei seit:
    16.12.2008
    Beiträge:
    6
    Zustimmungen:
    0
    Hallo Zusammen,

    ich beschäftige mich seit kurzem mit Unix und hab schon folgende Aufgabe, die ich lösen möchte. Vielleicht könnt ihr mir helfen.

    Zwei Dateien möchte ich vergleichen die folgend aussehen.

    Datei1.csv:

    wert1a;wert1b;wert1c;wert1d
    wert2a;wert2b;wert2c;wert2d
    wert3a;wert3b;wert3c;wert3d

    Datei2.txt

    wert1a#wert1b#wert1c#wert1d
    wert2a#wert2b#wert2c#wert2d
    wert3a#wert3b#wert3c#wert3d

    Jetzt möchte ich wissen, ob wert1a bis wert[n]a in der zweiten Datei2.txt in Spalte a vorhanden ist. Dabei soll in der ganzen Spalte von Zeile 1 bis n gesucht werden.
    Wird ein Wert gefunden, so soll dieser in eine neue DateiXY geschrieben werden.

    Ich denke das es mit awk funktionieren sollte, aber da ich mich erst seit kurzem damit beschäftige weiß ich nicht wie ich überhaupt anfangen soll.
    Wenn möglich sollte dies unter C-Shell lauffähig sein.

    Gruß combat
     
  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 saeckereier, 16.12.2008
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    Ich würde glaube ich perl nehmen, aber das extra dafür zu lernen wäre mir zu kompliziert wenn ichs nicht schon könte. Aber wir haben hier ein paar Shell Gurus, die können dir sicher sagen, ob's mit der Shell ginge...
     
  4. combat

    combat Grünschnabel

    Dabei seit:
    16.12.2008
    Beiträge:
    6
    Zustimmungen:
    0
    In Perl kenne ich mich nicht so aus. Ich will es schon in C-Shell schreiben.
    Trotzdem Danke!
     
  5. zst

    zst Foren As

    Dabei seit:
    06.09.2006
    Beiträge:
    95
    Zustimmungen:
    0
    Hallo combat,
    hast Du schon einen Lösungsansatz ? Oder hat sich das Thema erledigt?
    Gruss zst
     
  6. combat

    combat Grünschnabel

    Dabei seit:
    16.12.2008
    Beiträge:
    6
    Zustimmungen:
    0
    Hi zst,
    nein, ich habe noch keine Lösung. Hast du vielleicht eine Idee?
    Gruß combat
     
  7. DaMutz

    DaMutz Doppel-As

    Dabei seit:
    18.10.2003
    Beiträge:
    149
    Zustimmungen:
    0
    Ort:
    Giebenach / Schweiz
    ich habe etwas gefunden: http://jmop.de/2008/01/23/awk-dateien-vergleichen/

    in etwa so geht es:
    PHP:
    BEGIN FS=";|#" }
    NR==FNR a[$1]=$0next }
    ($
    1 in a) {
            
    printf "%s\n", $0
    }
    Das Skript gibt alle Zeilen der 2. Datei aus die auch in der ersten Datei gefunden (erster Wert identisch) wurde. Willst du das Ausgabeformat der 1. Datei, so kannst du $0 durch a[$1] ersetzen.

    //edit: aufruf: 'awk -f awk_file Datei1.csv Datei2.txt'
     
  8. zst

    zst Foren As

    Dabei seit:
    06.09.2006
    Beiträge:
    95
    Zustimmungen:
    0
    Hallo combat,
    ohne awk ginge es per normaler BASH auch so:

    Code:
    for i in $(cut -d ";" -f1 ./Datei1.csv)
         do
         grep $i ./Datei2.txt >>./DateiXY
    done
    
    Gruss zst
     
  9. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  10. #8 hagbard celine, 28.12.2008
    hagbard celine

    hagbard celine Routinier

    Dabei seit:
    02.06.2005
    Beiträge:
    251
    Zustimmungen:
    0
    Ort:
    Chemnitz
    'grep' würde ich auch nehmen. Übrigens kannst du 'grep' auch in Perl nutzen!
     
  11. #9 Gott_in_schwarz, 28.12.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    1. Wenn überhaupt müsste das fgrep sein (oder grep -F). ABER, es soll nach dem Wert nur in der ersten Spalte gesucht werden. Dann wird das gleich etwas umfangreicher. (Nicht viel, aber etwas.)
    2. Es wurde bereits zwei mal im Thread die verwendete Shell angegeben...
    und 3.
    Es soll nur der gefundene Wert in die dritte Datei geschrieben werden, nicht die gesamte Zeile..

    Ich würd btw mal schätzen, dass das für die anderen Spalten dann genauso laufen soll...

    edit:
    Nur ist das da was völlig anderes.
     
Thema: Zwei Dateien vergleichen
Besucher kamen mit folgenden Suchen
  1. bash vergleich zwei dateien

Die Seite wird geladen...

Zwei Dateien vergleichen - Ähnliche Themen

  1. Bash - Zwei Binärdateien vergleichen (SQL Diff)

    Bash - Zwei Binärdateien vergleichen (SQL Diff): Moin, versuche zwei SQL Dumps miteinander zu vergleichen, dazu hole ich Stammdaten aus der MSSQL-DB und speichere sie direkt unter der Bash in...
  2. Vergleich von zwei Dateien

    Vergleich von zwei Dateien: Guten Morgen, ich bin auf der Suche nach einem Befehl in der Konsole, um zwei Dateien zu vergleichen. Der Befehl öffnet ein Fenster in dem...
  3. Zwei Textdateien

    Zwei Textdateien: Hallo an alle! Ich habe zwei Textdateien. Erste sieht so aus: iptables -t filter -I vpn_users -p tcp -s dynamicipoftheuser -d iptables -t...
  4. zwei Dateien aneinander Reihen mit cat und seq

    zwei Dateien aneinander Reihen mit cat und seq: Hallo, ich hoffe es kann jemand helfen. Also, ich habe mehrere topo-* Dateien die von 01 bis 24 durchnummeriert sind. Das gleiche gilt für...
  5. Systempartition um den Speicherplatz der zweiten Disk erweitern

    Systempartition um den Speicherplatz der zweiten Disk erweitern: Guten Tag liebe Leute Ich habe einen virtuellen Server mit 2 Disk a je 25GB. Nun möchte ich, das meine Hauptpartition um diese zusätzlichen 25GB...