Awk (mawk) reduce los números decimales a cero

Awk (mawk) reduce los números decimales a cero

Me parece un error en awk( mawk1.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/localeo con localecomando 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/localepara usted.

información relacionada