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

0

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

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

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

MONTH A1 A2 A3 ...
1 1.54 2.49 6.50 ...
    
por steve 24.06.2016 / 16:07

3 respostas

2

Assumindo que sua tabela é, 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

Edit: Mesma coisa com o Perl:

perl -lape '$.-1 and $_ = join "\t", map { sprintf "%.2f", $_ } @F' file.csv
    
por 24.06.2016 / 16:52
3

Não tenho certeza do que você quer dizer com "usando o unix", mas praticamente qualquer ferramenta que forneça uma função (s)printf de estilo C deve ser capaz de fazer isso, por exemplo, no 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 tabela - por exemplo, se ele precisa manipular números de ponto flutuante mais gerais (possivelmente incluindo expoentes, por exemplo).

    
por 24.06.2016 / 16:40
1

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

    
por 24.06.2016 / 16:23

Tags