Reformatear tabla: número de dígitos

Reformatear tabla: número de dígitos

Tengo algunas tablas donde los números tienen demasiados dígitos; de la siguiente manera:

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

¿Hay alguna manera, usando Unix, de reformatear la tabla de la siguiente manera?

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

Respuesta1

No estoy seguro de lo que quieres decir con "usar Unix", pero casi cualquier herramienta que proporcione una (s)printffunción básica de estilo C debería poder hacer eso, por ejemplo en su forma más simple.

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

El comando exacto requerido dependerá de los detalles de los datos de su tabla, por ejemplo, si necesita manejar números de coma flotante más generales (posiblemente incluyendo exponentes, por ejemplo).

Respuesta2

Suponiendo que su tabla es en realidad un archivo 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:Lo mismo con Perl:

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

Respuesta3

Aquí hay un comienzo:

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

información relacionada