PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tips zu sed, awk oder was sonst noch so verfügbar ist...



jean_luc_picard
01-03-2005, 14:42
Hallo Leute,

ich möchte in einem Bash-Skript die Nachkommastellen eines Strings prüfen und ggf. modifizieren. Als Ausgabe möchte ich immer einen String in dem Format x,xxxkg erhalten, wobei die Stellen vor dem Komma nicht begrenzt sein sollen. Der zu bearbeitende String kann z.B. "8kg", "8,1kg" und "8,15kg" sein oder sich schon im richtigen Format befinden.

Ich bin schon in der Lage, mir etwas aus sed und awk zusammenzupuzzeln, wäre aber für einen Tip, der das Ganze verkürzt sehr dankbar ;)

Gruß, Picard

Romanday
01-03-2005, 23:45
Hallo Leute,

ich möchte in einem Bash-Skript die Nachkommastellen eines Strings prüfen und ggf. modifizieren. Als Ausgabe möchte ich immer einen String in dem Format x,xxxkg erhalten, wobei die Stellen vor dem Komma nicht begrenzt sein sollen. Der zu bearbeitende String kann z.B. "8kg", "8,1kg" und "8,15kg" sein oder sich schon im richtigen Format befinden.

Ich bin schon in der Lage, mir etwas aus sed und awk zusammenzupuzzeln, wäre aber für einen Tip, der das Ganze verkürzt sehr dankbar ;)

Gruß, Picard

String teilen, als Trennzeichen nimmst das Komma.
Dann kannst du die Stringlänge nach dem Komma prüfen,
und deine jeweiligen Aktionen auslösen.
Den Rest (kg, gramm usw.) schreibst Du hinten dran.
Fertig.

peschmae
02-03-2005, 08:36
z.B. so:


VAR=8,12kg
VAR=${VAR%kg}
VAR=${VAR/,/.}
printf %.3f%s $VAR kg


, so jetzt gehts glaub ich. Falls du in der Ausgabe kein Dezimalpunkt willst musst du halt noch ein | sed s#\.#,# dranhängen.

MfG Peschmä

jean_luc_picard
02-03-2005, 18:03
Super, das sieht gut aus! Wusste gar nicht, dass es printf für die Shell gibt... mal sehen, was man damit noch alles formatiert bekommt ;)


Gruß, Picard