Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/11/2006, 09h38   #1
Membre confirmé
 
Avatar de linar009
 
Inscription : juillet 2006
Messages : 497
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : juillet 2006
Messages : 497
Points : 271
Points : 271
Par défaut Conversion fichier plat vers CSV

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 :

Code :
1234    titi toto      0008999999   234
Et j'aimerais obtenir un fichier CSV de la sorte :

Code :
234;1234;0008999999;titi toto
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...
linar009 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2006, 09h49   #2
Modérateur
 
Avatar de ggnore
 
Inscription : juillet 2004
Messages : 2 246
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : juillet 2004
Messages : 2 246
Points : 1 903
Points : 1 903
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.
ggnore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2006, 09h58   #3
Membre confirmé
 
Avatar de linar009
 
Inscription : juillet 2006
Messages : 497
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : juillet 2006
Messages : 497
Points : 271
Points : 271
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...
linar009 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2006, 10h06   #4
Membre chevronné
 
Avatar de Spoutnik
 
Homme
Inscription : octobre 2003
Messages : 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Etats-Unis

Informations forums :
Inscription : octobre 2003
Messages : 668
Points : 746
Points : 746
Code :
sed -i 's/\t/;/g' fichier_plat.txt
-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}'
EDIT : correction du awk
__________________
Two beer or not two beer. (Shakesbeer)
Question technique par MP => poubelle!
Spoutnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2006, 12h54   #5
Modérateur
 
Avatar de ggnore
 
Inscription : juillet 2004
Messages : 2 246
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : juillet 2004
Messages : 2 246
Points : 1 903
Points : 1 903
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.
ggnore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2006, 13h35   #6
Membre confirmé
 
Avatar de linar009
 
Inscription : juillet 2006
Messages : 497
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : juillet 2006
Messages : 497
Points : 271
Points : 271
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...
linar009 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h33.


 
 
 
 
Partenaires

Hébergement Web