Dateien verbinden

Diskutiere Dateien verbinden im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hi... ich stehe vor einem großen und vorallem schweren Problem.... Ich hab 3 verschiedene Dateien mit verschiedenen Informationen... Aus...

  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

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    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. #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...
     
  10. #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. unix shell zeilen verbinden

    ,
  2. awk dateien verbinden

    ,
  3. linux files verbinden

Die Seite wird geladen...

Dateien verbinden - Ähnliche Themen

  1. mehrere Textdateien gleichzeitig öffnen.

    mehrere Textdateien gleichzeitig öffnen.: Hallo Es geht um das editieren mehrerer Textdateien gleichzeitig. Diese kann man natürlich in einem Texteditor öffnen. Mein Problem ist, dass die...
  2. Dateien nach Bestandteil im Namen verschieben

    Dateien nach Bestandteil im Namen verschieben: Hallo zusammen, es gibt ja schon einige Threads zum automatisierten Verschieben nach exif Datum etc. Ich versuche es einfacher anhand eines...
  3. Samba Dateien und Ordner verschieben

    Samba Dateien und Ordner verschieben: Moin, Ich verwende für mein Server OpenMediaVault (=Debian-System). Mein OMV hat kein Raid. Ich habe einen User "SMBadmin" angelegt. Bei...
  4. Dateien in Unix finden, die mehrere Strings beinhalten

    Dateien in Unix finden, die mehrere Strings beinhalten: Hallo liebe Leute, ich versuche über die Shell unter Unix alle Dateien ausfindig zu machen, die sowohl den SuchstringA als auch den SuchstringB...
  5. 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...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden