Warum AWK verweigern Summe bis schwebt
Ich bin vor ein ziemlich seltsames problem mitawk
wo ich will, zu berechnen den Durchschnitt einer Spalte. Dies ist der test-Eingang mit meinem Datei:
1
2
0.4
0.250
0.225
0.221
0.220
0.218
- Und dies ist das Skript, das ich versuche zu laufen:
awk '{sum += $1} END {print sum; print sum /NR}' ~/Desktop/bar.txt
Was erwarte ich als Ausgabe:
<calculated sum>
<calculated average>
Aber das ist, was ich bekommen immer:
3
0,375
Ich habe die Formatierung und Zeichen der Eingabedatei etc. aber ich kann Sie nichtawk
zu summieren diese lästigen schwimmt.
Irgendwelche Ideen?
Ich bin mit awk
version 20070501 in der bash 3.2.48 auf OS X 10.8.5.
Update
Als @sudo_O richtig abgeleitet, das problem ist meine locale. Austausch der .
mit einem ,
in der Datei liefert die richtigen Ergebnisse. Das ist offensichtlich nicht die Lösung die ich Suche, obwohl, so brauche ich etwas mit meinem locale, die derzeit festgelegt ist:
$ locale
LANG="de_CH.UTF-8"
LC_COLLATE="de_CH.UTF-8"
LC_CTYPE="de_CH.UTF-8"
LC_MESSAGES="de_CH.UTF-8"
LC_MONETARY="de_CH.UTF-8"
LC_NUMERIC="de_CH.UTF-8"
LC_TIME="de_CH.UTF-8"
LC_ALL=
Ich würde gerne zu halten, numerische, Währungs-und Datum-Gebietsschemas, denke ich. Die locale muss ich ändern (und wie), um awk
Arbeit?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist nicht
awk
hier. Explizit schwimmt und sehen, was Sie bekommen:Wie es aussieht ist es wohl das Gebietsschema als Ihre Ausgabe verwendet eine
,
als Dezimaltrennzeichen, so dass post die Ausgabe derlocale
Befehl.Also mit Ihrem
LC_NUMERIC
kann ich reproduzieren Ihre Ergebnisse:Fix Ihre
LC_NUMERIC
oderLC_ALL
zuC
oder irgendetwas anderes, dass die Verwendung.
als Dezimaltrennzeichen:Sehen
man locale
für weitere Informationen.