Spalteninhalte dividieren

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von upperlimit, 20.04.2005.

  1. #1 upperlimit, 20.04.2005
    upperlimit

    upperlimit Jungspund

    Dabei seit:
    11.04.2005
    Beiträge:
    16
    Zustimmungen:
    0
    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
     
  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 cremi, 20.04.2005
    Zuletzt bearbeitet: 20.04.2005
    cremi

    cremi Dude

    Dabei seit:
    15.02.2004
    Beiträge:
    329
    Zustimmungen:
    0
    Ort:
    AUT/Ktn
    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
     
  4. #3 upperlimit, 20.04.2005
    upperlimit

    upperlimit Jungspund

    Dabei seit:
    11.04.2005
    Beiträge:
    16
    Zustimmungen:
    0
    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
     
  5. #4 Schlaubi_fi.de, 21.04.2005
    Schlaubi_fi.de

    Schlaubi_fi.de Mac OS X User

    Dabei seit:
    22.12.2004
    Beiträge:
    304
    Zustimmungen:
    0
  6. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

Spalteninhalte dividieren