[Awk] Comportement différent suivant la variable d'environnement LANG

Comportement différent suivant la variable d'environnement LANG [Awk] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 24-10-2004 à 20:09:17    

Hello tout le monde,
 
J'ai un fichier tout bête qui ressemble à çà :
 


$ cat brut.mat
1.00000000000000 2.775557561562891E-016
4.440892098500626E-016 1.00000000000000
4.440892098500626E-016 0.99999999999999
$


 
Et un script awk, mon premier [:ddr555], qui va me permettre de formatter un peu tout çà :
 

Code :
  1. {
  2.     if ( NF > 0 ) {
  3.         printf("| " )
  4.         for( x=1 ; x <= NF ; x++) {
  5.             printf ("%14E  ",$x)
  6.         }
  7.         printf("|\n" )
  8.     }
  9. }


 
Le problème est que j'obtiens des comportements différents suivant la valeur de la variable d'environnement LANG.
 
Exemple :
 
LANG="fr_FR@euro

Code :
  1. $ export LANG="fr_FR@euro"
  2. $ awk -f format.awk brut.mat
  3. |   1,000000E+00    2,000000E+00  |
  4. |   4,000000E+00    1,000000E+00  |
  5. |   4,000000E+00    0,000000E+00  |
  6. $


 
LANG="en_US

Code :
  1. $ export LANG="en_US"
  2. $ awk -f format.awk output.res2.clean
  3. |   1.000000E+00    2.775558E-16  |
  4. |   4.440892E-16    1.000000E+00  |
  5. |   4.440892E-16    1.000000E-00  |
  6. $


 
C'est la version US qui me donne des résultats corrects. La VF semble tronquer le résultat.  Pour rassurer les inquiets, le résultat ne sera pas ensuite réintroduit, c'est juste à des fins de lisibilité et de vérification rapide.  
 
Est-ce un comportement "normal" ? Y'a une astuce, qqchose à savoir ?
 
Merci, @+


Message édité par Evadream -jbd- le 24-10-2004 à 20:10:52
Reply

Marsh Posté le 24-10-2004 à 20:09:17   

Reply

Marsh Posté le 25-10-2004 à 11:14:28    

Evadream -jbd- a écrit :

Hello tout le monde,
 
J'ai un fichier tout bête qui ressemble à çà :
 


$ cat brut.mat
1.00000000000000 2.775557561562891E-016
4.440892098500626E-016 1.00000000000000
4.440892098500626E-016 0.99999999999999
$


 
Et un script awk, mon premier [:ddr555], qui va me permettre de formatter un peu tout çà :
 

Code :
  1. {
  2.     if ( NF > 0 ) {
  3.         printf("| " )
  4.         for( x=1 ; x <= NF ; x++) {
  5.             printf ("%14E  ",$x)
  6.         }
  7.         printf("|\n" )
  8.     }
  9. }


 
Le problème est que j'obtiens des comportements différents suivant la valeur de la variable d'environnement LANG.
 
Exemple :
 
LANG="fr_FR@euro

Code :
  1. $ export LANG="fr_FR@euro"
  2. $ awk -f format.awk brut.mat
  3. |   1,000000E+00    2,000000E+00  |
  4. |   4,000000E+00    1,000000E+00  |
  5. |   4,000000E+00    0,000000E+00  |
  6. $


 
LANG="en_US

Code :
  1. $ export LANG="en_US"
  2. $ awk -f format.awk output.res2.clean
  3. |   1.000000E+00    2.775558E-16  |
  4. |   4.440892E-16    1.000000E+00  |
  5. |   4.440892E-16    1.000000E-00  |
  6. $


 
C'est la version US qui me donne des résultats corrects. La VF semble tronquer le résultat.  Pour rassurer les inquiets, le résultat ne sera pas ensuite réintroduit, c'est juste à des fins de lisibilité et de vérification rapide.  
 
Est-ce un comportement "normal" ? Y'a une astuce, qqchose à savoir ?
 
Merci, @+


 
Normal. En Fr tu dois mettre une virgule à la place des points dans ton fichier source.
Ton fichier source est au format Us -> les décimales osnt notées avec des . et non pas avec des ,.
Tu remplaces les . par des , et tu verras que les résultats de ton test seront inversés (bon en Fr pas bon en Us).
Voili.

Reply

Marsh Posté le 25-10-2004 à 12:02:37    

Tout bêtement... J'ai honte :)
Merci !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed