
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)printf
funçã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