awk et LC_NUMERIC

Je me suis bien tiré les cheveux avec le awk de mon Mac Intel (sous Leopard):

des opérations mathématiques simples sur des colonnes d’un fichier me donnaient

des résultats complètement aberrants.

De même je me suis aperçu que:

echo "1.23456" |awk '{print -$1}''
-1

et que

echo "1,23456" |awk '{print -$1}'
-1,23456

En cherchant pas mal sur le web j’ai trouvé que la faute venait de la variable LC_NUMERIC.

locale | grep LC_NUMERIC
LC_NUMERIC="fr_FR.UTF-8"

En changeant cette variable par export LC_NUMERIC=C les résultats étaient complètement différents:

echo "1.23456" |awk '{print -$1}'
-1.23456

et

echo "1,23456" |awk '{print -$1}'
-1

Ce qui a résolu mes problèmes d’opérations mathématiques (j’ai donc exporter LC_NUMERIC=C dans mon .profile).

PS: Cela dit en passant la réponse -1 donnée, faudrait m’expliquer …

Ce contenu a été publié dans Informatique, Mac Os X, Shell, avec comme mot(s)-clé(s) , , . Vous pouvez le mettre en favoris avec ce permalien.

Une réponse à awk et LC_NUMERIC

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *