Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/01/2020, à 15:50

soupaloignon

[Résolu] Fractionner le contenu d'un fichier .csv

Bonjour,

Je cherche à fractionner un fichier .csv content X lignes, et que chaque ligne soit envoyée dans un fichier  csv différent, portant comme nom le contenu de la 2ème colonne (contenu qui peu être 1 seul mot, ou un groupe de mots séparés par des espaces).

Contenu exemple du csv d'origine :

true;Mangeclous;1988;Mizrahi (Moshe);Comedie dramatique;;Pierre Richard, Jacques Villeret, Bernard Blier;Mangeclous, Saltiel, Salomon, Mattathias et Michael sont juifs, francais, naifs,et surtout bons à rien. Ils recoivent un chèque et une carte, sensé les aiguiller dans une recherche au trésor.
true;Revoir Là-haut (Au);2017;Dupontel (Albert);Comedie dramatique;1080HdLight;Nahuel Perez Biscayart, Albert Dupontel, Laurent Lafitte, Niels Arestrup, Emilie Dequenne;Novembre 1919. Deux rescapés des tranchées, l'un dessinateur de génie, l'autre modeste comptable, décident de monter une arnaque aux monuments aux morts. Dans la France des années folles, l'entreprise va se révéler aussi dangereuse que spectaculaire..
true;Hasard Balthazar (Au);1966;Bresson (Robert);Drame;1080HdLight;Anne Wiazemsky, Francois Lafarge, Philippe Asselin, Nathalie Joyaut, Walter Green;La vie de l'âne Balthazar, plongé au milieu des drames humains et qui en meurt. Je voulais que l'âne traverse un certain nombre de groupes humains qui représentent les vices de l'humanité. Il fallait aussi, étant donné que la vie d'un âne est très égale, très sereine, trouver un mouvement, une montée dramatique. C'est à ce moment que j'ai pensé à une fille, à la fille qui se perd.

Au temps j'ai trouvé comment faire dans l'autre sens (concaténer plusieurs fichiers en 1 seul avec un coup de cat) au temps pour la manip inverse je sèche carrément.

Merci par avance pour toute idée, piste, lien qui m'éclairerait sur ce sujet

Dernière modification par soupaloignon (Le 19/01/2020, à 18:26)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#2 Le 19/01/2020, à 16:15

Watael

Re : [Résolu] Fractionner le contenu d'un fichier .csv

salut,

un bête awk :

awk -F ';' '{ print $0 > $2 }' tonFichier

mnémo: si on traite des champs, c'est awk. wink


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 19/01/2020, à 17:31

soupaloignon

Re : [Résolu] Fractionner le contenu d'un fichier .csv

Merci Watael, impérial, comme à ton habitude smile

Je viens de me faire quelques pages sur awk, pour comprendre ta ligne. Je coinçais sur le -F ';' jusqu'à ce que je découvre, si j'ai bien compris, que le séparateur par défaut pour awk est la tabulation, et que si c'est un autre type de séparateur on l'indique avec ce -F ';'


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#4 Le 19/01/2020, à 17:44

Watael

Re : [Résolu] Fractionner le contenu d'un fichier .csv

c'est bien ça. ';' pour un CSV.

le séparateur par défaut est '[[:blank:]]*' (pour être compréhensible), c'est-à-dire un ou plusieurs espaces ou tabulations.
dans le cas d'un fichier dont le séparateur est une tabulation, et dans lequel il peut y avoir des champs vides, il faut indiquer -F $'\t' lorsque c'est exécuté dans bash, ou insérer un Ctrl-v i (pour obtenir une tabulation) entre apostrophes.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#5 Le 19/01/2020, à 17:59

soupaloignon

Re : [Résolu] Fractionner le contenu d'un fichier .csv

Lol, comme quoi le séparateur tabulation est vraiment à proscrire quand c'est possible, pour éviter justement ce problème d'un champ vide, ou de plusieurs, avec des tabulations comme séparateurs, on peut pas s'en sortir à l’œil nu big_smile, vive le point-virgule

Une dernière info, j'ai essayé de rajouter .csv pour les fichiers générés (c'est pas par utilité, plutôt pour le fun et pour comprendre) et impossible d'y arriver.

J'ai essayé

awk -F ';' '{ print $0 > $2.csv }' tonFichier

cela ne change rien au noms des fichiers.

Une série de

awk -F ';' '{ print $0 > "$2.csv" }' tonFichier

awk -F ';' '{ print $0 > '$2.csv' }' tonFichier

awk -F ';' '{ print $0 > "$2".csv }' tonFichier

renvoi des erreurs du genre

awk: ligne de commande:1: { print $0 > .csv }
awk: ligne de commande:1:                   ^ syntax error

   tu as une idée ?

Dernière modification par soupaloignon (Le 19/01/2020, à 18:01)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#6 Le 19/01/2020, à 18:10

Watael

Re : [Résolu] Fractionner le contenu d'un fichier .csv

lol. tu as tout essayé sauf ce qui fonctionne :

print $0 >$2".csv"

:)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#7 Le 19/01/2020, à 18:25

soupaloignon

Re : [Résolu] Fractionner le contenu d'un fichier .csv

mdr, je n'avais pas pensé à celle-là lol

Merci


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne