# Awk, problème de point et de virgules



## stalmar (21 Septembre 2009)

Hello à tous

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

Soit, j'ai un fichier liste.txt:

```
Bob   3.2
David 4.8
```
Et mon fichier cmd.awk:

```
{ print $2*2; }
```
Ma commande dans le terminal (awk -f cmd.awk liste.txt) m'affiche

```
6
8
```
Par contre, si mon fichier liste.txt est:

```
Bob  3,2
David 4,8
```
Dans ce cas le résultat est:

```
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


----------



## [Vezøul]Numerø41 (21 Septembre 2009)

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.


----------



## tatouille (21 Septembre 2009)

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


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


----------



## [Vezøul]Numerø41 (22 Septembre 2009)

tatouille a dit:


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

Au pire tu fais un sed sur le fichier de ton prof.


----------



## stalmar (22 Septembre 2009)

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


----------



## [Vezøul]Numerø41 (22 Septembre 2009)

Ok donc c'était bien ça


----------



## stalmar (22 Septembre 2009)

Ouai 

Par contre voici le mien

```
> 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 ?


----------



## [Vezøul]Numerø41 (22 Septembre 2009)

Modifier ton fichier .bash_profile en exportant ta variable d'environnement avec la valeur voulue.


----------



## stalmar (22 Septembre 2009)

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


```
# 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


----------



## [Vezøul]Numerø41 (22 Septembre 2009)

oui c'est le fichier .profile


----------

