表の書式変更 - 桁数

表の書式変更 - 桁数

数字の桁数が多すぎる表がいくつかあります。次のとおりです。

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を使用する」とはどういう意味か分かりませんが、基本的なCスタイルの(s)printf機能を提供するツールであれば、たとえば最も単純なものでも、それができるはずです。

$ 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

関連情報