-
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.
-
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:
$ sed 's/CONTREVALEUR EN FRANCS [^ ]\+ //' fichier