#!/bin/sh # # Nutzung der mit igawk gelieferten Funktion round() zum Runden von Zahlen # # 16.7.2006 # Das vorliegende File ist ein Shell-Skript mit der Endung .awk, so dass der # Editor Vim automatisch das Syntax Highlighting für AWK einschaltet. # Hauptbestandteil des Shell-Skriptes ist ein AWK-Programm, das zur Ausführung # an igawk übergeben wird. igawk ' # round() einbinden @include round.awk BEGIN { # den Dezimaltrenner unserer Locale ermitteln dez_trenner = index(sprintf("%.1f", 1.5), ",") ? "," : "." # auch das Gegenstück (Komma bzw. Punkt), das kein Dezimaltrenner ist, # merken; Achtung: da dieser Trenner bei sub() verwendet wird, ist er als # regulärer Ausdruck zu werten, d.h., der Punkt ist durch Backslash zu # schützen, wobei der Backslash innerhalb eines Strings doppelt zu notieren # ist nicht_dez_trenner = (dez_trenner == ",") ? "\\." : "," # die Argumenteliste als Liste der zu rundenden Zahlen interpretieren for (i = 1; i < ARGC; i++) { zahl = ARGV[i] # bei Bedarf den Nicht-Dezimaltrenner durch den Dezimaltrenner ersetzen sub(nicht_dez_trenner, dez_trenner, zahl) printf("%10g --> %10g\n", zahl, round(zahl)) } # da wir keine weiteren Daten verarbeiten wollen, beenden wir das Skript; # andernfalls würde AWK die Argumente als Namen der noch zu bearbeitenden # Dateien auffassen exit } ' "$@"