script shell pour manipuler fichier csv - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 06-01-2011 à 10:48:20
Tu peux remplacer deux retours à la ligne consécutifs par un seul :
Code :
|
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.
Marsh Posté le 06-01-2011 à 10:50:34
useless cat
Code :
|
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.
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.
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.
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.
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 ?