Table

重新格式化表格 - 位數

  • June 24, 2016

我有一些表格的數字太多了;如下:

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

有沒有辦法使用 unix 以下列方式重新格式化表:

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

假設您的表實際上是 TAB 分隔值的文件:

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

我不確定“使用 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 .....

所需的確切命令將取決於您的表數據的詳細資訊 - 例如它是否需要處理更通用的浮點數(例如可能包括指數)。

引用自:https://unix.stackexchange.com/questions/291858