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 :

Commande AWK ou SED pour modification données dans fichier


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 25
    Points : 21
    Points
    21
    Par défaut Commande AWK ou SED pour modification données dans fichier
    Bonjour,
    Je me permets de vous écrire car je cherche à écrire une commande pour modifier un fichier de données. Cependant, malgré les exemples des différents topics du forum je n'ai pas réussi à faire mon programme comme je le souhaitais. Peut-être pourrez-vous me venir en aide.

    En entrée : un fichier "à plat" volumineux de données qui porte une zone de montant à partir de la position 334 (sur 18 caractères numériques) et un libellé à partir de la position 364 (sur 20 caractères).

    Objectif : créer une copie du fichier en multipliant le montant par 1.35 (par exemple) et modifiant le libellé de sorte que :
    le libellé ABCDEFGHIJKLMNOPQRST devienne BADCFEHGJILKNMPORQTS

    Je suppose que la commande AWK ou SED doit pouvoir gérer ça très facilement mais je n'arrive à trouver la bonne synthaxe.
    Pourriez-vous m'indiquer comment faire si vous le voyez facilement (éventuellement via deux commandes (une pour le montant, une autre pour le libellé).

    Merci d'avance

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 149
    Points : 167
    Points
    167
    Par défaut
    l'idée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
     
    nawk '
        function return_lettres(chaine,index)
        {
          longueur=length(chaine);
     
          if ( (longueur - index) <= 1 )
          {
            return chaine;
          }
     
          carac1=substr(chaine,index,1);
          carac2=substr(chaine,index+1,1);
     
          debut_chaine=substr(chaine,0,index);
          fin_chaine=substr(chaine,index+2,longueur-(index+2));
     
          chaine_reconstitue=debut_chaine carac2 carac1 fin_chaine;
     
          return return_lettres(chaine_reconstitue,index+2);
        }
     
        BEGIN{
          debut_montant=334;
          longueur_montant=18;
     
          debut_libelle=364;
          longueur_libelle=20;
        }    
        { 
     
          debut=substr($0,0,debut_montant);
          milieu=substr($0,debut_montant+longueur_montant,debut_libelle);
          fin=substr($0,debut_libelle+longueur_libelle,length($0));
     
          montant=substr($0,debut_montant,longueur_montant);
          libelle=substr($0,debut_libelle,longueur_libelle);
     
          nouveau_libelle=return_lettres(libelle);
     
          montant=montant*1.3;
     
          printf("%s%s%s%s%s",debut,montant,milieu,nouveau_libelle,fin);
     
        } ' ${in_fic} >> $out_fic

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/03/2012, 09h59
  2. Problème pour récuperer donnée dans un txt
    Par Maldus dans le forum Delphi
    Réponses: 4
    Dernier message: 15/10/2006, 21h19
  3. [Access 2003]Erreur modification données dans base distante
    Par Julio_del_pueblo dans le forum Access
    Réponses: 2
    Dernier message: 22/06/2006, 14h22
  4. [DOM XML] Insertion données dans fichier XML avec PHP pour Flash ?
    Par ExSter dans le forum Bibliothèques et frameworks
    Réponses: 17
    Dernier message: 10/05/2006, 11h16
  5. methodologie pour Supprimer données dans base de données
    Par elkhy dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 26/04/2006, 18h30

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