Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1227 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  script shell pour manipuler fichier csv

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

script shell pour manipuler fichier csv

n°1259186
Profil sup​primé
Posté le 06-01-2011 à 10:10:42  answer
 

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 ?

mood
Publicité
Posté le 06-01-2011 à 10:10:42  profilanswer
 

n°1259206
regexp42
Eplucheur de RFC.
Posté le 06-01-2011 à 10:48:20  profilanswer
 

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.

n°1259207
o'gure
Modérateur
Multi grognon de B_L
Posté le 06-01-2011 à 10:50:34  profilanswer
 

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 !
n°1259551
Profil sup​primé
Posté le 07-01-2011 à 14:58:43  answer
 

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

n°1259619
regexp42
Eplucheur de RFC.
Posté le 07-01-2011 à 18:20:52  profilanswer
 


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

n°1260268
Profil sup​primé
Posté le 12-01-2011 à 12:01:21  answer
 

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

n°1260293
regexp42
Eplucheur de RFC.
Posté le 12-01-2011 à 13:26:16  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  script shell pour manipuler fichier csv

 

Sujets relatifs
Script transcodage mkv => avi - need testeurs !2 ou 4 coeurs pour serveur de fichier sous Debian Lenny
Quel format de fichier pour Linux et MacOSX 10.2 pour disque externe ?Paramètre HOTPLUG dans fichier ifcfg-ethX
Snapshot LVM et redirection de fichier -> crash du systèmescript unix ajoutant la date à chaque nouvelle ligne
connaitre l'encoding d'un fichierfichier ne garde pas l'attribut du groupe
Script Bash: cut/sed? 
Plus de sujets relatifs à : script shell pour manipuler fichier csv


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR