Tabelle neu formatieren - Anzahl der Ziffern

Tabelle neu formatieren - Anzahl der Ziffern

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)printfFunktion 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

verwandte Informationen