An all Leser, ich hätte eine Frage zu GAWK: Ich habe eine Datei mit folgendem Inhalt (in C++ mit printf generiert ) -- Zeilen Auszug -- 269.944015 0 0008.0 0006.9 64 20 Ich möchte den Durschnitt der dritten Spalte (Index beginnt mit 1) über alle Zeilen ausrechnen und lese daher mit $3 ein. Beim Einlesen wird jedoch nur der ganzzahlige Anteil der Zahl eingelesen. D.h. zum Beispiel bei der Zahl 269.944015 nur 269. Wenn ich mit GAWK und printf die Zahl ausgebe fällt mir auf, dass hier nicht wie gewohnt ein Punkt zur Trennung zwischen Vor- und Nachkommastellen verwendet wird sondern ein Komma. Nun meine Frage: Wie kann ich mit GAWK Vor- und Nachkommastellen einlesen ohne das Datenformat der Datei zu ändern? (Wenn ich alles Punkte durch Kommas ersetze verhält sich GAWK wie erwartet) Alternativ: Gibt es in GAWK eine Möglichkeit, z.B. Suchen Ersetzen mit der ich sozusagen als Aufbereitung alle Punkte durch Kommas ersetze kann? Schon mal vielen Dank, Thomas
Hi Thomas! Thomas Bohnert schrieb am 17.10.2004 15:41 :
Wenn ich mit GAWK und printf die Zahl ausgebe fällt mir auf, dass hier nicht wie gewohnt ein Punkt zur Trennung zwischen Vor- und Nachkommastellen verwendet wird sondern ein Komma.
Nun meine Frage: Wie kann ich mit GAWK Vor- und Nachkommastellen einlesen ohne das Datenformat der Datei zu ändern?
Versuche mal vor dem Aufruf von gawk diese Zeile: LANG=en_US LC_ALL=en_US Falls das nicht funktionieren sollte, kannst du so die Punkte in Kommas verwandeln: sed "s/\./,/g" daten.txt | gawk ... Gruß, Michael
Hallo Michael, danke für deine Hilfe. Nach dem Ändern der Umgebungsvariablen konnte ich die Werte einlesen. Grüße, Thomas On Sunday 17 October 2004 16:28, Michael Wenger wrote:
Hi Thomas!
Thomas Bohnert schrieb am 17.10.2004 15:41 :
Wenn ich mit GAWK und printf die Zahl ausgebe fällt mir auf, dass hier nicht wie gewohnt ein Punkt zur Trennung zwischen Vor- und Nachkommastellen verwendet wird sondern ein Komma.
Nun meine Frage: Wie kann ich mit GAWK Vor- und Nachkommastellen einlesen ohne das Datenformat der Datei zu ändern?
Versuche mal vor dem Aufruf von gawk diese Zeile: LANG=en_US LC_ALL=en_US
Falls das nicht funktionieren sollte, kannst du so die Punkte in Kommas verwandeln: sed "s/\./,/g" daten.txt | gawk ...
Gruß, Michael
Hallo Thomas, hallo Leute, Am Sonntag, 17. Oktober 2004 15:41 schrieb Thomas Bohnert:
ich hätte eine Frage zu GAWK:
Ich habe eine Datei mit folgendem Inhalt (in C++ mit printf generiert )
-- Zeilen Auszug -- 269.944015 0 0008.0 0006.9 64 20
Ich möchte den Durschnitt der dritten Spalte (Index beginnt mit 1) über alle Zeilen ausrechnen und lese daher mit $3 ein. Beim Einlesen wird jedoch nur der ganzzahlige Anteil der Zahl eingelesen. D.h. zum Beispiel bei der Zahl 269.944015 nur 269. Wenn ich mit GAWK und printf die Zahl ausgebe fällt mir auf, dass hier nicht wie gewohnt ein Punkt zur Trennung zwischen Vor- und Nachkommastellen verwendet wird sondern ein Komma.
Nun meine Frage: Wie kann ich mit GAWK Vor- und Nachkommastellen einlesen ohne das Datenformat der Datei zu ändern? (Wenn ich alles Punkte durch Kommas ersetze verhält sich GAWK wie erwartet)
gawk scheint die locale-Einstellungen auszuwerten. Schuss ins Blaue: LANG=C gawk .....
Alternativ: Gibt es in GAWK eine Möglichkeit, z.B. Suchen Ersetzen mit der ich sozusagen als Aufbereitung alle Punkte durch Kommas ersetze kann?
Bestimmt, aber da kann ich Dich nur auf die Doku verweisen. Das naheliegegende s/\./,/ habe ich bei einem kurzen Test nicht zum Laufen bekommen, ich bin bei awk aber auch Anfänger ;-) Gruß Christian Boltz -- Im Archiv dieser Liste findest Du so ziemlich jede Meinung zu reiserfs. Dort kannst Du dir eine aussuchen :) [Harald Huthmann in suse-linux]
participants (3)
-
Christian Boltz
-
Michael Wenger
-
Thomas Bohnert