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 :

awk avec fieldwiths


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 1
    Par défaut awk avec fieldwiths
    Bonjour.
    Ma banque peut m'exporter des donnnées en quicken ou csv.
    je voudrais tester le csv mais il y a des infos en trop.
    Voici un exemple de ce que je recois :
    11/02/2010 3600116 TRANSACTION CARTE -45,48 CONTREVALEUR EN FRANCS 298,33 BLANCHE PORTE REF CB.000846969
    09/02/2010 78 2001 QUITTANCE -24,38 CONTREVALEUR EN FRANCS 159,92 MAIF 79038 NIORT CEDEX 000884 2006988Z 78 2008788 T
    =====================================
    je voudrais supprimer la zone "contrevaleur en francs et la zone montant en francs qui suit par awk :
    cat test.csv | sed 's/ /./g' | awk '{ FIELDWITHS=10 9 } { print $1" "$3" "$4}'
    voila ce que j'obtiens :
    ========
    11/02/2010 TRANSACTION.CARTE... -45,48 .......CONTREVALEUR.EN.FRANCS......298,33...........................................BLANCHE.PORTE....................REF..CB.000859269.....................................................
    09/02/2010 QUITTANCE........... -24,38 .......CONTREVALEUR.EN.FRANCS......159,92...........................................MAIF.79038.NIORT.CEDEX....000884.............................................2001769Z.....................................................................78.2001769.Z..........................................................
    ======
    j'ai modifié quelques nombres pour discrétion.
    je n'arrive pas a comprendre ce qu'il faut ajouter entre les {}{} pour enlever la partie contrevaleur...X francs sachant que cette zone fait 84 caracteres entre la position 40 et 124.
    Merci bien pour votre aide.
    sevy.

  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
    Bonjour,

    L'utilisation de la variable built-in FIELDWITHS se fait pour des fichiers contenant des champs de longueur fixe ce qui ne semble pas être le cas de l'exemple donné dont les champs sont séparés par des tabulations. De plus, cette variable built-in n'est disponible que dans la version GNU de awk et ne marchera donc pas pour les machines UNIX traditionnelles.

    Pourquoi ne pas simplement utiliser sed? Comme ceci par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ sed 's/CONTREVALEUR EN FRANCS [^ ]\+ //' fichier

Discussions similaires

  1. awk avec system
    Par rico3434 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 19/08/2008, 13h25
  2. awk avec tableaux
    Par gdev7 dans le forum Unix
    Réponses: 3
    Dernier message: 03/06/2008, 17h19
  3. Utilisation de awk avec option index et substr
    Par iuchiban dans le forum Linux
    Réponses: 0
    Dernier message: 25/04/2008, 14h02
  4. [Système] awk avec exec()
    Par ostead dans le forum Langage
    Réponses: 2
    Dernier message: 16/07/2007, 16h51
  5. Réponses: 11
    Dernier message: 12/04/2005, 14h08

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