|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Inscription : juillet 2006 Messages : 497 ![]() |
Bonjour,
J'aimerais convertir un fichier plat avec pour délimiteur des tabulations en un fichier CSV (délimiteur ; ). Voici le format de mon fichier actuel : Et j'aimerais obtenir un fichier CSV de la sorte : Sachant que le deuxième champ peut contenir des espaces (comme "titi toto" dans mon exemple) Pourriez-vous m'aider à écrire un shell qui ferait cela ? Merci par avance. Cordialement,
__________________
Je n'ai pas participé à de nombreuses courses de spermatozoïdes, mais j'ai donné de nombreux départs... |
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : juillet 2004 Messages : 2 246 ![]() |
sed est tout à fait ce qu'il te faut.
Tu peux décrire avec cette outil le comportement suivant : Dés que je rencontre un ou plusieurs espaces, je le(ou les) remplace par un ;
__________________
Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer. |
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Inscription : juillet 2006 Messages : 497 ![]() |
ok, mais le problème est qu'il ne s'agit pas de simples espaces mais de tabulations.
De plus, mes champs ne sont pas dans l'ordre souhaité... Pourriez-vous m'en dire un peu plus sur SED ? Merci.
__________________
Je n'ai pas participé à de nombreuses courses de spermatozoïdes, mais j'ai donné de nombreux départs... |
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() Inscription : octobre 2003 Messages : 668 ![]() |
-i : mode édition : ton fichier sera modifié
entre les quotes : s : substitue ce qu'il y a entre les 2 premier '/' par ce qu'il y a entre le 2 et 3e '/' \t : tabulation g : global, change toutes les occurences rencontrées dans l'ensemble du fichier texte ++ Par contre pour changer l'ordre des champ, regarde plutot du coté de AWK, ca correspond plus à ton besoin Ex : pour virer les espaces, et mettre les champ dans l'ordre indiqué dans ton exemple + remplacer les"tab" par ";" : Code :
cat fichier_plat.txt| sed 's/ //g' | awk -F '\t' '{print $5";"$1 ";"$4";"$2";"$3}'
__________________
Two beer or not two beer. (Shakesbeer) Question technique par MP => poubelle! |
|
|
00
|
|
|
#5 |
![]() ![]() Inscription : juillet 2004 Messages : 2 246 ![]() |
on peut aussi substituer/supprimer un caractère unique avec tr.
__________________
Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer. |
|
|
00
|
|
|
#6 |
|
Membre confirmé
![]() Inscription : juillet 2006 Messages : 497 ![]() |
Ok, c'est bon j'ai réussi grâce à vous.
Merci beaucoup pour votre aide ! Ca fait plaisir
__________________
Je n'ai pas participé à de nombreuses courses de spermatozoïdes, mais j'ai donné de nombreux départs... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com