script shell pour manipuler fichier csv

script shell pour manipuler fichier csv - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 06-01-2011 à 10:10:42    

bonjour, j'ai des fichiers csv contenant les données extraites d'une base de données. En base, certains champs de type texte contiennent des retours à la ligne. Ces retours à la ligne se retrouvent dans les fichiers csv mais foutent la zone.
Normalement je devrais avoir cela :
ligne1 : champ1 champ2 champ3
ligne2 : champ1 champ2 champ3
 
et j'ai ça :
ligne 1 : champ1 début_champ2
ligne 2 : fin_champ2 champ3
ligne 3 : champ1 champ2 champ3
 
Je dois parser ces fichiers csv et du coup ce que j'obtiens est incohérent.
J'ai donc voulu supprimer les retours à la ligne via un script. J'ai essayé ça :
tr -d '\n' < $fichier.csv > $nouveaufichier.csv
 
Ca supprime tellement les retours chariot que tout le fichier se retrouve sur une seule ligne (et non plus une ligne par instance dans la table).
 
Sauriez-vous comment faire cela ?

Reply

Marsh Posté le 06-01-2011 à 10:10:42   

Reply

Marsh Posté le 06-01-2011 à 10:48:20    

Tu peux remplacer deux retours à la ligne consécutifs par un seul :
 

Code :
  1. cat file.csv | sed "s/\n\n/\n/g" > file2.csv


 
Tu peux utiliser -i avec sed pour éditer le fichier et eviter de passer par un autre, mais c'est pas super portable. Je te laisse faire ça comme tu veux en fonction de ton OS.

Reply

Marsh Posté le 06-01-2011 à 10:50:34    

useless cat

Code :
  1. sed "s/\n\n/\n/g" file.csv > file2.csv



Message édité par o'gure le 06-01-2011 à 10:51:01

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 07-01-2011 à 14:58:43    

Je viens d'essayer, ça ne change pas le résultat, j'ai toujours un saut de ligne au milieu du champ texte.

Reply

Marsh Posté le 07-01-2011 à 18:20:52    


 
C'est parce que tu dois avoir des "\r\n" à la Microsoft pour les retours à la ligne plutôt que des "\n" simples.

Reply

Marsh Posté le 12-01-2011 à 12:01:21    

J'ai essayé avec des \r\n à la place des \n dans la commande d'O'gure, ça ne change rien.

Reply

Marsh Posté le 12-01-2011 à 13:26:16    

Bah fais un "hexdump -C" de ton fichier pour voir exactement ce que t'as dedans.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed