Dateien verbinden

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von electren, 08.06.2006.

  1. #1 electren, 08.06.2006
    electren

    electren Jungspund

    Dabei seit:
    03.06.2006
    Beiträge:
    21
    Zustimmungen:
    0
    Hi...
    ich stehe vor einem großen und vorallem schweren Problem....

    Ich hab 3 verschiedene Dateien mit verschiedenen Informationen...
    Aus diesen dreien muss ich eine Datei machen welche die Information aus allen 3 in einer bestimmten Reihenfolge angibt....
    z.b.
    Datei1: 123 HANS LUTZ TESTSTR 70 12345 HALLOWERDA
    Datei2: 123 0143 3445532 5456 xxx yyy
    Datei3: 0143 gkfkfk krkrkr laaae

    Und in der Ausgabe-Datei sollte es beispielsweise so aussehen:
    123 0143 LUTZ HANS TESTSTR 70 12345 HALLOWERDA USW....

    "123" und "0143" sind dabei Art primary keys....

    Ich hab kein blaßen Schimmer wie ich an das Problem rangehen soll.....

    Vielleicht könnte ihr mir auf die Sprünge helfen.....

    Vielen Dank
    mfg ele
     
  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 cuddlytux, 08.06.2006
    cuddlytux

    cuddlytux Alles außer unix ist sc..

    Dabei seit:
    25.11.2005
    Beiträge:
    169
    Zustimmungen:
    0
    Ort:
    Rheinhessen
    man cat
    man bash
     
  4. #3 electren, 08.06.2006
    electren

    electren Jungspund

    Dabei seit:
    03.06.2006
    Beiträge:
    21
    Zustimmungen:
    0
    mit cat dacht ich mir schon fast...

    Allerdings muss ich doch pipes verwenden um die eine datei zu buffern während ich die nächste einlese und diese beiden dann anhand der "primary keys" vergleichen will.... ??!!
    :hilfe2:
     
  5. #4 Keruskerfürst, 08.06.2006
    Keruskerfürst

    Keruskerfürst Kaiser

    Dabei seit:
    12.02.2006
    Beiträge:
    1.366
    Zustimmungen:
    0
    cat file1 file2 file3 > ergebnis
     
  6. #5 electren, 08.06.2006
    electren

    electren Jungspund

    Dabei seit:
    03.06.2006
    Beiträge:
    21
    Zustimmungen:
    0
    hmm :-)
    ich glaube nicht das cat mir automatisch die datenfelder ordnet.....

    aber trotzdem Danke für die Antworten....
     
  7. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Ich muesste schon sehr auf dem Schlauch stehen, um zu uebersehen, dass das auch nur um Entferntesten mit der Problemstellung zu tun hat.

    Da Du die Zeilen der verschiedenen Dateien vergleichen musst, und nichts darueber sagst, ob die Zeilen uebereinstimmen, wuerde ich mich an Deiner Stelle in perl o.ae. einlesen und dies dann erledigen.

    Falls die drei Dateien bereits zeilenweise richtig angeordnet sind, d.h., die Informationen jeweils aus der gleichen Zeile in den drei Dateien geholt werden sollten, koenntest Du mit paste und awk arbeiten.
    Code:
     paste file1 file2 file3 | awk '{print $1 $2 ....}'
    
     
  8. #7 Wolfgang, 08.06.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Deine Kriterien sind etwas schwammig. :think:
    Wenn ich das dennoch richtig verstehe , willst du nicht nur zusammenkopieren, sondern auch die Werte entsprechend selektieren.
    Wobei mir die Rolle der datei3 dann nicht ganz klar ist. :think:

    Korrigier mich, wenn ich das falsch verstanden habe.
    Vorschlag:
    Code:
    while read NUM REST ; do set x F=$(grep ^$NUM datei2); if [ -n "$3" -a "$(grep $3 datei3)" ]; then echo $NUM $3 $REST;fi; done <datei1 >ergebnis
    
    Das liest aus datei1 die Zeilen, und sucht aus datei2 den Wert NUM am Anfang raus, gibt dann nur alles in gewünschter Reihenfolge aus wenn der Wert NUM nicht leer ist und das gefundene zweite Wort aus datei2 (hier in $3 siehe Anmerkung zu set x) in datei3 an führender Position vorkommt.

    Sollte das nicht das sein was du willst, dann präzisier bitte die Bedingungen.

    * Durch set x wird die Zeile am Leerzeichen getrennt. Dannach kann auf die einzelnen Variablen (Wörter) über $2=erster wert $3=zweiter Wert usw. zugegriffen werden.
    Siehe auch man set

    Gruß Wolfgang
    Nachtrag: Ich gehe natürlich von eindeutigen Zeilen ohne Doppelung aus.
     
  9. Anzeige

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

    electren Jungspund

    Dabei seit:
    03.06.2006
    Beiträge:
    21
    Zustimmungen:
    0
    :-))
    ok - ich versuche zu "entschwammen" - aber ich glaube du hast es genau richtig verstanden..
    Datei1 enthält: Personen-ID, Namen, Vornamen, Geb-Dat
    Datei2 enthält: Personen-ID, Straße, PLZ, Ort, Adress-ID
    Datei3 enthält: Adress-ID, Land, Bevölkerung, whatever

    Ergebnisdatei: Personen-ID, Name, Vorname, Geb-Dat, Straße, PLZ, Ort, Adress-ID, Land, usw...

    Die Zeilen bzw. die IDs sind eindeutig!!

    Vielen Dank für deine Antwort ... hilft mir schon mal sehr weiter...

    @rikola: ebenfalls danke...
     
  11. #9 Wolfgang, 08.06.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Ja, ich hatte aus deinem ersten Beispiel nur nicht entnehmen können, welche Rolle Datei3 dabei spielt, weil du dort die Daten aus dieser nicht mit ausgegeben hast.

    Aber das ist nur eine kleine Umstellung in meinem Vorschlag, und du hast was du willst. ;)
    Versuch es mal selber.:headup:
    Wenn du nicht klar kommst, frag einfach nochmal konkret was nicht geht.
    Lies dich mal etwas in read ein.

    Gruß Wolfgang
     
Thema: Dateien verbinden
Besucher kamen mit folgenden Suchen
  1. linux files verbinden

Die Seite wird geladen...

Dateien verbinden - Ähnliche Themen

  1. User sollen Dateien speichern und ändern, aber nicht neu anlegen dürfen

    User sollen Dateien speichern und ändern, aber nicht neu anlegen dürfen: Hallo liebe Helfer, welche Einstellungen muss ich in der smb.conf bzw. unter Linux vornehmen, damit User vorhandene Dateien öffnen und speichern...
  2. 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...
  3. Dateien selektieren und zählen

    Dateien selektieren und zählen: Hallo, das ist mein erster Beitrag, bitte entschuldigt, falls nicht alles richtig geschrieben ist. Ich muss meine erste Hausaufgabe als...
  4. 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...
  5. Amarok streikt bei *.m4a Dateien

    Amarok streikt bei *.m4a Dateien: Hallo zusammen, vor Kurzem habe ich einen neuen Rechner zusammengebaut und mit OpenSuse 13.2 aufgesetzt. Nun musste ich aber feststellen, dass...