IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Option -N de gawk : restrictions ?


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Liamm
    Femme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 162
    Par défaut Option -N de gawk : restrictions ?
    Bonjour,

    Voici du code extrait d'un script, pour avoir l'essentiel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    COURS_ACTUEL="$3"
    ...
    gawk -N -F';' -v isin="$CODE_ISIN" -v cours="$COURS_ACTUEL" '
    ...
    END {
        # Calculs
        gain_perte = sum_net_vente + sum_net_achat + qte_restante * cours
        ...
    }' "$FICHIER_TRI"
    Quand je passe un nombre à virgule à l'argument 3 par exemple 3,21
    le calcul de gain_perte dans gawk prend pour la variable "cours" la partie entière du nombre, c'est à dire 3.
    Je pensais que l'option -N suffisait à régler ce genre de soucis.
    Apparemment ça ne suffit pas.

    Y-a-t'il quelqu'un qui a été confronté à cela ?
    Existe t-il une solution simple ?
    Que faut-il savoir sur ce sujet ?

    Cdt.
    Liam.

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 351
    Par défaut
    pas de gawk chez moi, mais si tu utilises la virgule, il faut que ta locale (LC_NUMERIC), lorsque tu lance ton gawk avec le -N, soit bien une locale qui utilise la virgule comme séparateur.
    Cordialement.

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 662
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 662
    Par défaut
    ouaip. sans effet pour moi aussi avec des locale en fr_FR.UTF-8.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gawk -N 'BEGIN{ print 3,21+3,21}'
    3 24 21


    ah...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ gawk -N 'BEGIN{ print "3.21"+"3.21"}'
    6
    $ gawk -N 'BEGIN{ print "3,21"+"3,21"}'
    6,42
    $ gawk 'BEGIN{ print "3,21"+"3,21"}'
    6
    $ gawk 'BEGIN{ print "3.21"+"3.21"}'
    6.42


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gawk -N 'BEGIN{ v="3,21"; print v+v}'                                                                                                                                                                            
    6,42
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gawk -N '{print $1,$1+$1}' /tmp/testGawk
    3,21 6,42
    ah !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ gawk -N -v v="3,21" 'BEGIN{print v,v+v}'
    3,21 6
    il va falloir trouver une autre manière de passer la variable.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 662
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 662
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ gawk -N '{print v,v+v}' v="3,21" /tmp/testGawk
    3,21 6,42
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 351
    Par défaut
    en fait tu n'utilises pas le paramètre -v pour que cela fonctionne...

    Même pas, la syntaxe est immuable en plus...

    donc
    Cordialement.

Discussions similaires

  1. Options (plus restrictives ?) de l'éditeur de texte vi
    Par kevin066 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 14/09/2023, 22h51
  2. [Kylix] kylix3 : pb sur options de projet
    Par Arsene dans le forum EDI
    Réponses: 3
    Dernier message: 09/04/2003, 10h41
  3. [propriétés]Option Checked
    Par psl dans le forum Composants VCL
    Réponses: 6
    Dernier message: 22/08/2002, 08h07
  4. Parametrage des options de projet
    Par ares7 dans le forum EDI
    Réponses: 7
    Dernier message: 22/07/2002, 15h33
  5. Vous gerez comment les options d'un programme?
    Par n0n0 dans le forum C++Builder
    Réponses: 5
    Dernier message: 17/05/2002, 13h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo