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 :

Avec gawk, comment ajouter au fichier traité une colonne qui est le produit de deux colonnes déjà existantes ?


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier Avatar de Liamm
    Femme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    160
    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 : 160
    Points : 80
    Points
    80
    Par défaut Avec gawk, comment ajouter au fichier traité une colonne qui est le produit de deux colonnes déjà existantes ?
    Bonjour,
    La question est dans le titre.
    Les colonnes sur lesquelles portent le produit contiennent des valeurs numériques, avec 0 ou 1 ou 3 chiffres après la virgule.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    40;100,200;78,524;4008,00;3120;            
    1  2       3      4       (1*3)  N° colonne
    En dernière colonne, produit des colonnes 1 et 3, TSPCS la partie décimale n'était pas prise en compte

    Extrait du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    gawk -F";" -v var1="tata" -v var3="toto" '
    {
        . . .
     
        #Suppression des 15 premieres lignes du fichier, et
        #Reorganisation des champs en sortie 
        if (NR>15)  print $1";"$2";"$3";"$4";"$1*$3";"
     
     
    } ' ftmp1.csv > f_sawk2_s.csv #Marche

    tags : awk gawk produit multiplier colonnes

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Bonjour,

    d'où vient le fichier ?
    pourquoi utilise-t-il la virgule comme séparateur décimal ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 284
    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 284
    Points : 12 739
    Points
    12 739
    Par défaut
    Sinon, exemples sous gawk ( avec la locale fr_FR.UTF-8 ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ locale -k LC_NUMERIC
    decimal_point=","
    thousands_sep=" "
    grouping=3
    numeric-decimal-point-wc=44
    numeric-thousands-sep-wc=8239
    numeric-codeset="UTF-8"
    $ echo "1.5;3.4" | awk -F\; '{print $1*$2}'
    5.1
    $ echo "1,5;3,4" | awk -F\; '{print $1*$2}'
    3
    $ echo "1,5;3,4" | awk -N -F\; '{print $1*$2}'
    5,1
    Cordialement.

  4. #4
    Membre régulier Avatar de Liamm
    Femme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    160
    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 : 160
    Points : 80
    Points
    80
    Par défaut
    Merci disedorgue.
    Avec l'option -N tout marche bien,

    ...même si je n'ai pas compris quelques points :
    ainsi lorsque je tape sur mon PC, j’obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ locale -k LC_NUMERIC
    decimal_point=","
    thousands_sep=" "
    grouping=3
    numeric-decimal-point-wc=44
    numeric-thousands-sep-wc=32
    numeric-codeset="UTF-8"
    Que signifie : ?


    Que signifie : ?

    Et encore merci pour cette bonne réponse !

  5. #5
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour

    Citation Envoyé par Liamm Voir le message
    Google ! C'est une espace fine insécable (la fameuse).
    Le forum ne comprend pas et a affiché son code. En décimal.

    Citation Envoyé par Liamm Voir le message
    Que signifie : ?
    Selon les cultures, ce ne sont pas les mêmes dessins pour les chiffres, pas la même position pour le signe, pas le même regroupement pour les chiffres :
    123 456 789,00
    123.456.789,00
    123,456,789.00
    12,34,56,789.00 ( <-- c'est surtout celle-ci qui est importante pour comprendre l'importance de "grouping")

    Ici, on dit juste que les chiffres sont regroupés 3 par 3.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  6. #6
    Membre régulier Avatar de Liamm
    Femme Profil pro
    Enseignant
    Inscrit en
    Janvier 2019
    Messages
    160
    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 : 160
    Points : 80
    Points
    80
    Par défaut
    Merci Flodelarab

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/06/2017, 10h28
  2. Réponses: 9
    Dernier message: 08/11/2010, 17h12
  3. Comment ajouter à la table emp une colonne
    Par waref dans le forum PL/SQL
    Réponses: 5
    Dernier message: 15/05/2009, 11h27
  4. Réponses: 2
    Dernier message: 26/11/2006, 10h51

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