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 :

Formatage de fichier avec awk


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1
    Par défaut Formatage de fichier avec awk
    Je voudrais lire un fichier d'entrée ligne par ligne, recalculer certains champs et afficher les résultats dans un autre fichier formaté différemment.

    Je suppose que je dois utiliser awk et des tableaux associatifs pour assigner des variables.

    Format du fichier d'entrée (ex de ligne) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BC2753;Personnages célèbres. Musiciens;;Poste;1992;2;18,00;0;0;0;0;0;0;0;0;0;0;0;0;0;0;;
    soit 22 champs, séparés par ";"

    format du fichier de sortie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Description;Unité;Propriété;Code de l'article;Prix;T.V.A.;Transport;Poids;Prix d'achat;Stocks
    soit 10 champs, séparés par ";"

    le champs Description correspon au champs "Personnages célèbres. Musiciens"
    le champs Unité = "à l'unité"
    le champs Propriété est vide
    le champs Code de l'article est la concaténation de "BC2753", de "Poste" et de "1992"
    le champs "Prix" = 18,00 divisé par la valeur du champs Stocks soit 2 dans l'exemple (division numérique)
    le champs "T.V.A." = TVA normale
    les champs "Transport", "Poids" et "Prix d'achat" sont vides
    le champs "Stocks" = 2

    Pour compliquer la chose : les champs "Stocks" et "Prix" ne sont pas toujours à la même place selon les enregistrements ; les combinaisons possibles
    sont :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $7/$6
    $10/$9
    $13/$12
    $16/$15
    $19/$18
    il n'ya jamais deux combinaisons ou plus dans un même enregistrements


    j'arrive à quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    awk 'BEGIN {FS=";";OFS=";"}
    $6 >= 2 {
            tab[Prix]=$7;tab[Stocks]=$6
            prix=tab[Prix]/tab[Stocks];
            tab[Description]=$2;tab[Propriété]=$5;tab[Code de l'article]=$1$3;tab[Prix]=$7;tab[Stocks]=$6
            for (c in tab) printf("%s", tab[c])
            print ""
            }
    ' < ${FICSUP2} > ${FICSUP3}

    Mais cela ne fonctionne pas ; qui a une solution ?

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Par défaut
    Citation Envoyé par sam56
    Pour compliquer la chose : les champs "Stocks" et "Prix" ne sont pas toujours à la même place selon les enregistrements ; les combinaisons possibles
    sont :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $7/$6
    $10/$9
    $13/$12
    $16/$15
    $19/$18
    il n'ya jamais deux combinaisons ou plus dans un même enregistrements
    Si tu n'as pas de critère pour les localiser dans la chaîne, je ne vois pas comment tu pourrais faire. Supprimer les champs vide ou nuls? Est-ce que les champs stock et prix se trouvent alors à la même place?

Discussions similaires

  1. parcourir 2 fichiers avec awk, et comparer 2 champs
    Par morphdown dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 09/07/2013, 11h03
  2. Extraire des valeurs d'un fichier avec AWK
    Par Maillon dans le forum Linux
    Réponses: 2
    Dernier message: 05/02/2009, 22h49
  3. traiter 2 fichier avec awk
    Par zcoul dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 11/03/2008, 18h28
  4. Lire un fichier avec awk
    Par lili2704 dans le forum Linux
    Réponses: 4
    Dernier message: 18/01/2007, 15h53
  5. problème formatage de fichier avec awk
    Par nenekes dans le forum Shell et commandes GNU
    Réponses: 16
    Dernier message: 02/11/2006, 12h53

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