awk Variablendeklaration

M

Markus371

Grünschnabel
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
 
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
 
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
 

Ähnliche Themen

Bash - Zwei Binärdateien vergleichen (SQL Diff)

AWK Tip gesucht

awk: Dateiinhalt/Variableninhalt als Teil einer if-Anweisung

Text ersetzen - (schon wieder - ich weiß)

Log filtern summieren mit AWK

Zurück
Oben