Awk, problème de point et de virgules

stalmar

Membre confirmé
8 Juillet 2006
18
1
38
Hello à tous

Voilà, j'ai un soucis avec du code Awk sous mac (gawk nawk pareil)

Soit, j'ai un fichier liste.txt:
Bloc de code:
Bob   3.2
David 4.8
Et mon fichier cmd.awk:
Bloc de code:
{ print $2*2; }
Ma commande dans le terminal (awk -f cmd.awk liste.txt) m'affiche
Bloc de code:
6
8
Par contre, si mon fichier liste.txt est:
Bloc de code:
Bob  3,2
David 4,8
Dans ce cas le résultat est:
Bloc de code:
6,4
9,6
Le problème est que sur Windows ou Ubuntu, c'est l'inverse et dans le cas ou le prof nous donne un fichier de nombres décimaux je suis cuit.

Je pense que le problème vient peut être de la région (Suisse romande), de la gestion des nombres sous OSX (Léopard et SL) mais changer ces valeurs n'aide pas.

Si jamais quelqu'un à une idée

Merci
 
Je ne sais pas sous Mac car je n'ai jamais utilisé awk sous OSX mais sous Linux ce problème de format entre le point et la virgule est souvent du à la variable d'environnement LC_NUMERIC. :p :D :D
 
Bloc de code:
>$ echo "Bob   3.2" | awk -F" " '{ print $2*2; }'
6.4
>$
aucune idée, sachant que le term sous OSX c'est toujours en Anglais

Bloc de code:
>$ locale
LANG="en_US.UTF-8"
LC_COLLATE="C"
LC_CTYPE="C"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL="C"
la seul chose que je vois apres le probleme de formattage la version de BSDawk, plus la difference entre BSDawk et son clone GPL Gawk, qui ne fonctionne pas pareil.

+
3,2 est une string pas un float meme en math mettre une vigule en separateur est une hérésie! cette representation n'est faite que pour l'affichage certainement pas pour le storage, si j'ai un fichier data avec un export 0,0 pour representer des double je le renvois a la figure du createur avec un cout de pied au cul

donc si ton prof se permet de mettre des floatant avec des virgules dans un fichier data, c'est un guigui et tu devrais demander a changer de prof car incapable de vous expliquer les bases et montrant de tres vilaines facon de faire, parce que

1/ c'est nous qui vous recuperons dans la vie active et on doit defaire 5 ans de conneries universitaire, donc en gros ce que je vois avec les djeuns de toutes ecoles confondues il nous faut nous professionels environ 1 et demi avec les plus doués ( les autres ont les vire avant il ne faut pas se leurrer) pour defaire ce poison
 
si j'ai un fichier data avec un export 0,0 pour representer des double je le renvois a la figure du createur avec un cout de pied au cul

Sauf quand c'est ton client qui te le fourni et qu'il te paie pour que ça fonctionne et qu'il en a rien à faire en général de tes petits problèmes de tambouille de développeur. :p :D :D

Au pire tu fais un sed sur le fichier de ton prof. :p :D :D
 
Hello, Merci à vous

En fait le problème est justement inverse, le prof me file des 4.8 et ça me renvoie 8 au lieu de 9.6

Par contre, je viens de tester sur un autre mac, et ça fonctionne très bien.
donc si je trouve pas je pense reformater.

Je vais déjà tâcher d'accéder à ces variables d'environnement et je vous tiens au courant.
Encore merci

---------- Nouveau message ajouté à 14h09 ---------- Le message précédent a été envoyé à 14h06 ----------

Yes, grâce à vous et la LC_NUMERIC
j'ai trouvé ça

http://dadoun.net/awk-et-lc_numeric/

Thanks all
 
Ouai

Par contre voici le mien
Bloc de code:
> locale
LANG="fr_CH.UTF-8"
LC_COLLATE="fr_CH.UTF-8"
LC_CTYPE="fr_CH.UTF-8"
LC_MESSAGES="fr_CH.UTF-8"
LC_MONETARY="fr_CH.UTF-8"
LC_NUMERIC="fr_CH.UTF-8"
LC_TIME="fr_CH.UTF-8"
LC_ALL=
mais c'est exactement le même que celui de l'école qui lui fonctionne.

Par contre si je change avec export LC_NUMERIC=C ça fonctionne bien
mais au redémarrage le fr_CH.UTF-8 se remet comme valeur par défaut.

Y a t'il une commande pour sauvegarder ces changements ?
 
Mmmh j'ai pas trouvé de fichier .bash_profile sur le disque (même caché)

le seul qu'il existe c'est ~/.bash_history

---------- Nouveau message ajouté à 15h41 ---------- Le message précédent a été envoyé à 15h38 ----------

y a un fichier .profile en fait ~/.profile

Bloc de code:
# MacPorts Installer addition on 2009-09-16_at_21:41:03: adding an appropriate PATH variable for use with MacPorts.
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
# Finished adapting your PATH environment variable for use with MacPorts.


##
# Your previous /Users/Admin/.profile file was backed up as /Users/Admin/.profile.macports-saved_2009-09-16_at_21:44:50
##

# MacPorts Installer addition on 2009-09-16_at_21:44:50: adding an appropriate PATH variable for use with MacPorts.
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
# Finished adapting your PATH environment variable for use with MacPorts.

j'ai du installer un truc foireux par le passé je pense