表形式の変更 - 桁数

表形式の変更 - 桁数

次のように、数が多すぎるテーブルがあります。

MONTH A1 A2 A3  ......
1 1.54564468 2.48949 6.4984984 .....

Unixを使用してテーブルを次のように再フォーマットする方法はありますか?

MONTH A1 A2 A3 ...
1 1.54 2.49 6.50 ...

答え1

「Unixの使用」はどういう意味なのかわかりませんが、(s)printf基本的なCスタイル機能を提供するほとんどすべてのツールは、最も簡単なツールのようにこれを行うことができるはずです。

$ 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 .....

必要な正確なコマンドは、テーブルデータの詳細によって異なります。たとえば、より一般的な浮動小数点数(たとえば、指数を含めることができます)を処理する必要があるかどうか。

答え2

テーブルが実際にタブで区切られた値のファイルであるとします。

awk -v OFS='\t' 'NR-1 { for(i=1; i<=NF; i++) $i = sprintf("%.2f", $i) } 1' <file.csv

編集する:Perlも同様です。

perl -lape '$.-1 and $_ = join "\t", map { sprintf "%.2f", $_ } @F' file.csv

答え3

開始は次のとおりです。

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

関連情報