Me parece un error en awk
( mawk
1.3.4.20200120-2) en Ubuntu 20.04. Puedo mostrar el número requerido de decimales con printf (%.*n*f)
, pero los decimales siempre se redondean a cero, como si hubiera un "piso" implícito involucrado:, como puede ver en los siguientes ejemplos.
Ejemplo 1:
$ echo "2.3 4.99789" | awk '{printf "%.2f %.2f\n", $1, $2}' 2,00 4,00
Ejemplo 2:
$ cat testf 1.23 3.65 5.76 $awk '{ SUM += $1} END { printf "%.2f\n", SUM }' testf 9,00
Respuesta1
Esto no fue un problema awk
(aunque se manifestó en awk
, no, por ejemplo, en bash cuando se usa bc
). Fue un simple error de configuración/configuración local.
La configuración regional de Europa del Este se utiliza ,
como separador decimal en lugar de .
. Mi ubicación era una mezcla de configuración de EE. UU. y configuración de SK.
Solución:
Verifique: cat /etc/default/locale
o con locale
comando para LC_NUMERIC
.
P.ej:LC_NUMERIC="sk_SK.UTF-8"
Modificar:
ya sea localmente en
.bashrc
.o en todo el sistema con:
sudo update-locale LC_NUMERIC="en_US.UTF-8
que se actualizará correctamente
/etc/default/locale
para usted.