awk Variablendeklaration

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Markus371, 09.09.2009.

  1. #1 Markus371, 09.09.2009
    Markus371

    Markus371 Grünschnabel

    Dabei seit:
    09.09.2009
    Beiträge:
    7
    Zustimmungen:
    0
    Hallo,

    ich möchte mit awk eine Datei verarbeiten, die in der 3. Spalte Umsätze beinhaltet und in der 5. Spalte die Zuordnung der Umsätzte nach B, S und R.
    Die Summen sollen in einer neuen Datei mit # getrennt abgelegt werden.

    Problem:
    Die Summen der Zuordnung B sind in der neuen Datei Ganzzahlig, während die
    Summen der Zuordnung S und R Gleitkommazahlen sind.

    Frage:
    Wie bekomme ich es hin, das unabhängig von der Ursprungsdatei die Summen
    als Gleitkommazahlen übergeben werden?


    So sieht die Datei1 aus:
    12804 # 1683.00 # B #
    12804 # 882.50 # B #
    12804 # 995.95 # B #
    12804 # 997.23 # B #
    usw.


    Mein Code:
    .formel xsys = "awk -v 'OFS= # ' '/B/ { band += $3 } /S/ { schuett += $3 } /R/ { rest += $3 } END {print band,schuett,rest OFS }' " +'T|x1tmp' + " >> " + 'T|x2tmp'
    .system 'xsys' hinter

    So sieht Datei2 aus:
    1234 # 523.12 # 417.4 #


    Mit freundlichem Gruß
    Markus
     
  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 bytepool, 09.09.2009
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    ich bin mir nicht sicher ob ich verstanden habe was du willst, aber wenn es dir nur um die Formatierung der Ausgabe geht, suchst du printf.

    mfg,
    bytepool
     
  4. #3 Markus371, 09.09.2009
    Markus371

    Markus371 Grünschnabel

    Dabei seit:
    09.09.2009
    Beiträge:
    7
    Zustimmungen:
    0
    Hi,
    es geht weniger um die Formatierung als um das Problem, das die Summe zur Zuordnung B Ganzzahlig bzz Integer ist und nicht doubel bzw float.

    awk sollte normalerweise automatisch erkennen ob Text (String) oder Zahl (Nummer) ankommt und entsprechent die Variablenart zuweisen. Leider ist es so, dass nicht double zugewisesn wird sondern so vermute ich Integer zugewiesen wird , da das Endergebnis um 0.04 Cent abweicht und die Zuordnungen von S und R richtig sind, da hier der jeweils erste ankommende Satz z.b. 12.23 und nicht 12.00 ist.

    Gruß
    Markus
     
Thema:

awk Variablendeklaration