dbf-Tabellenwerte selektieren und erhöhen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Praktikant4614, 30.03.2007.

  1. #1 Praktikant4614, 30.03.2007
    Zuletzt bearbeitet: 30.03.2007
    Praktikant4614

    Praktikant4614 Grünschnabel

    Dabei seit:
    30.03.2007
    Beiträge:
    3
    Zustimmungen:
    0
    Hi,
    ich sitze seit Tagen an einem Problem:think: :
    Ich habe eine dbf-Datei mit mehreren Feldern pro Zeile, hier ein Ausschnitt:
    LINKNO DSLINKNO WSNO Order DOUT_END

    3 1 3 0 0,0
    211 5 57 0 7414,2
    241 210 35 0 16242,6
    240 210 36 0 16242,6
    210 5 78 241 7414,2
    5 2 23 211 31214,1
    7 4 12 0 4578,0
    9 6 45 0 1415,2
    205 163 87 0 16242,6
    204 163 212 0 16242,6

    Anhand der letzten Spalte werden in einem späteren Verarbeitungsschritt einzelne Zeilen einander zugeordnet. Es gehören immer zwei zusammen. Leider kommt es durch Zufall (die Datei ist ziemlich groß) vor, dass vier oder mehr Zeilen den gleichen Wert "DOUT_END" haben, dadurch entstehen "falsche Nachbarn". Diese muss ich herausfiltern und den DOUT_END-Wert eines korrekten Pärchens minimal ändern, so dass die Zuordnungen wieder eindeutig sind.
    Die korrekten Zuordnungen lassen sich über die zweite Spalte "DSLINKNO" erkennen.
    Ich muss also die Anweisung geben: Zähle alle Zeilen mit gleichem DOUT_END (dafür habe ich die dbf-Datei in eine txt-Datei umgewandelt und die gleichen DOUT_END-Werte mit awk {DOUTEND[$5] ++} gezählt) und wenn das mehr als zwei sind gib sie mir aus.
    So weit so gut.
    Dann hab ich das ganze noch mit sort und uniq in die Form gebracht, dass jeder kritische DOUT_END-Wert einmal in einer Textdatei auftaucht, aus ihr kann ich diese einzeln mit sed herausholen.
    Aber wie kann ich mit diesen Werten ein Schleife aufbauen, die mir in der dbf-Tabelle diese DOUT_END-Werte um, sagen wir mal 0,1, erhöht?

    Bin für alle Vorschläge dankbar!

    Greetz,
    Andi
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    LINKNO DSLINKNO WSNO Order DOUT_END

    3 1 3 0 0,0
    211 5 57 0 7414,2
    241 210 35 0 16242,6
    240 210 36 0 16242,6
    210 5 78 241 7414,2
    5 2 23 211 31214,1
    7 4 12 0 4578,0
    9 6 45 0 1415,2
    205 163 87 0 16242,6
    204 163 212 0 16242,6
     
  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 Wolfgang, 30.03.2007
    Wolfgang

    Wolfgang Foren Gott

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

    Etwas kompliziert für mich - als nicht in der Materie stehenden - zu begreifen was du machen willst.

    Du willst gleiche Spaltenwerte um 0.1 erhöhen?
    Warum machst du das nicht gleich in deinem ersten awk-skript?
    Bin mit awk nicht so verbunden, da ich dafür immer perl verwende.
    Aber awk kennt auch hashtable.
    Deshalb würde ich für jeden Spaltenwert5 einen key anlegen.
    Ist der key Wert definiert, dann war er schon vorhanden und wird solange erhöht, bis ein nicht vorhandener key vorliegt, den du dann einsetzen kannst.
    Damit sparst du dir die ganzen zusätzlichen Läufe.

    Hoffe ein wenig Anregung gegeben zu haben.

    Gruß Wolfgang
     
  4. #3 Praktikant4614, 30.03.2007
    Praktikant4614

    Praktikant4614 Grünschnabel

    Dabei seit:
    30.03.2007
    Beiträge:
    3
    Zustimmungen:
    0
    Hi Wolfgang,
    danke für die Antwort!
    Das Ganze ist in der Tat etwas kompliziert...
    Leider kann ich nicht einfach jeden mehrfach vorkommenden Wert erhöhen. Nur wenn ein Wert in mehr als zwei Zeilen in Spalte 5 vorkommt muss etwas geschehen. Und zwar stimmen dann von diesen Zeilen immer jeweils zwei in Spalte zwei überein. Dadurch ergeben sich Pärchen. Und diese muss ich unterscheiden. Das möchte ich tun indem ich die Werte der Spalte fünf paarweise leicht verändere.
    Und da hakt es bei mir.

    Falls es da eine Möglichkeit gibt, so etwas zu machen...

    Gruß Andi
     
Thema:

dbf-Tabellenwerte selektieren und erhöhen

Die Seite wird geladen...

dbf-Tabellenwerte selektieren und erhöhen - Ähnliche Themen

  1. 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...
  2. Aktuelle Einträge selektieren

    Aktuelle Einträge selektieren: Hallo alle zusammen :hilfe2:, ich habe ein Shellskript geschrieben(allgemein gültig), das die Logdatein analysiert, auswertet und die wichtigen...
  3. selektieren mit der maus problemhaft

    selektieren mit der maus problemhaft: hi! ich kann nicht mehr sauber mit meiner maus selektieren. wenn ich es versuche, wird erst zwei buchstaben weiter oder überhaupt nicht...