
Ich habe einige Tabellen, bei denen die Zahlen zu viele Ziffern haben, wie folgt:
MONTH A1 A2 A3 ......
1 1.54564468 2.48949 6.4984984 .....
Gibt es eine Möglichkeit, die Tabelle unter Unix folgendermaßen neu zu formatieren:
MONTH A1 A2 A3 ...
1 1.54 2.49 6.50 ...
Antwort1
Ich bin nicht sicher, was Sie mit "unter Verwendung von Unix" meinen, aber so ziemlich jedes Tool, das eine grundlegende (s)printf
Funktion im C-Stil bereitstellt, sollte dazu in der Lage sein, zum Beispiel in seiner einfachsten
$ perl -pe 's/\d+\.\d+/sprintf "%.2f", $&/ge'
MONTH A1 A2 A3 ......
1 1.54564468 2.48949 6.4984984 .....
MONTH A1 A2 A3 ......
1 1.55 2.49 6.50 .....
Der genau erforderliche Befehl hängt von den Details Ihrer Tabellendaten ab – beispielsweise, ob allgemeinere Gleitkommazahlen (möglicherweise einschließlich Exponenten) verarbeitet werden müssen.
Antwort2
Angenommen, Ihre Tabelle ist tatsächlich eine Datei mit TAB-getrennten Werten:
awk -v OFS='\t' 'NR-1 { for(i=1; i<=NF; i++) $i = sprintf("%.2f", $i) } 1' <file.csv
Bearbeiten:Dasselbe gilt für Perl:
perl -lape '$.-1 and $_ = join "\t", map { sprintf "%.2f", $_ } @F' file.csv
Antwort3
Hier ist ein Anfang:
for line in "1 1.54564468 2.48949 6 .4984984"; do printf "%.2f " $line; done
1,00 1,55 2,49 6,00 0,50