Spalteninhalte dividieren

U

upperlimit

Jungspund
Hallo,

ich möchte gerne die Elemente einer Spalte durch die Elemente einer zweiten Spalte dividieren. Dazu folgendes Beispiel mit dem Datenfile data.

me@home: cat data
1.20 0.2
4.3 3.4

Ein anschliessender 'awk'-Befehl ergab jedoch die Fehlermeldung

me@home: awk '{print $1/$2}' data
awk: Kommandozeile:1: (FILENAME=data FNR=1) Fatal: Division durch Null versucht;

auch

me@home: awk '{print ($1*1.0)/$2}' data

half nicht.
Meine Schlussfolgerung war, dass awk die (Dezimal-)punkte falsch interpretierte, d.h. nach dem Punkt abschnitt. Die Folge: 1 / 0 => Division durch Null.
Also ersetzte ich die Punkte durch Kommata, jedoch mit demselben Resultat.

Wie kann das sein ? Was mache ich falsch ?
Gibt es Lösungen mit alternativen Kommandos/Programmiersprachen (ev. in TCL)?


upperlimit
 
also bei mir funktioniert das tadellos

Code:
laurin@rincewind:~/tmp$ cat data
1.20 0.2
4.3 3.4
laurin@rincewind:~/tmp$ awk '{print $1/$2}' data
6
1.26471
laurin@rincewind:~/tmp$

ich hab ne englishe version von debain installiert - wenn ich die punkte mit beistrichen vertausche liest er nur die zahl vorm beistrich

Code:
laurin@rincewind:~/tmp$ cat data
1,20 0,2
4,3 3,4
laurin@rincewind:~/tmp$ awk '{print $1/$2}' data
inf
1.33333
laurin@rincewind:~/tmp$
aber rechnen tut er schon richtig:
1/0 = undendlich und
4/3 = 1.333
 
Zuletzt bearbeitet:
Hallo,

das Problem liegt offensichtlich in einem seltsamen Verhalten von awk unter den SuSE 9.x Distris.

Meine awk-Version 3.1.3 zeigt offensichtlich dieselben Probleme wie einige seiner Vorgängerversionen (wie eine Recherche in der SuSE Mailing list ergab).

Abhilfe (zumindest bei mir) gelang, als ich die Umgebungsvariable LANG mittels

LANG=POSIX

gesetzt habe.


upperlimit
 

Ähnliche Themen

Aufbauprobleme beim Desktop beim initialen Login

Zurück
Oben