Tabela de reformatação - Número de dígitos

Tabela de reformatação - Número de dígitos

Tenho algumas tabelas onde os números têm muitos dígitos; como se segue:

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

Existe uma maneira, usando unix, de reformatar a tabela da seguinte maneira:

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

Responder1

Não tenho certeza do que você quer dizer com "usar unix", mas praticamente qualquer ferramenta que forneça uma (s)printffunção básica no estilo C deve ser capaz de fazer isso, por exemplo, da forma mais simples

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

O comando exato necessário dependerá dos detalhes dos dados da sua tabela - por exemplo, se ele precisa lidar com números de ponto flutuante mais gerais (possivelmente incluindo expoentes, por exemplo).

Responder2

Supondo que sua tabela seja na verdade um arquivo de valores separados por TAB:

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

Editar:A mesma coisa com Perl:

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

Responder3

Aqui está um começo:

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

informação relacionada