Pages : 1
#1 Le 18/10/2006, à 15:42
- paul@gloomoot
Script Bash
Bonjour, je sais pas si je m'adresse au bon forum mais j'ai toujours été aidé pa la communauté ubuntu.
Je cherche un script (bash de préférence) pour convertir un fichier de type
element1;element2;element3;element4
element1;element2;element3;element4
element1;element2;element3;element4
element1;element2;element3;element4
en
"element1","element2","element3","element4"
"element1","element2","element3","element4"
"element1","element2","element3","element4"
"element1","element2","element3","element4"
Merci d'avance pour votre aide
http://leblogdepaul.free.fr
Hors ligne
#2 Le 18/10/2006, à 15:46
- pabix
Re : Script Bash
ça doit se faire avec sed ou awk...
quels caractères composent tes éléments ? Il peut y avoir des points virgules dans tes éléments ?
Sinon, je fais sous vim
:%s/\([^;]*\);\([^;]*\);\([^;]*\);\([^;]*\)$/"\1","\2","\3","\4"/g
Benoit
Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D
Hors ligne
#3 Le 18/10/2006, à 15:48
- pabix
Re : Script Bash
euh explication quand même :
\( et \) pour encadrer une expression régulière
[^;]* pour dire "autant de caractères que possibles différents du point-virgule
\1, \2, \3, \4 servent à remettre les expressions régulières cherchées.
Benoit
Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D
Hors ligne
#4 Le 18/10/2006, à 15:48
- paul@gloomoot
Re : Script Bash
non il n'y a pas de points virgules dans les éléments
Il ne contiennent que des chiffres et des lettres
merci pour ton aide! je maitrise pas vraiment VI, mais je vais essayer :\
http://leblogdepaul.free.fr
Hors ligne
#5 Le 18/10/2006, à 15:52
- pabix
Re : Script Bash
Attention, vi, tu peux te planter bien dur si tu connais pas avant d'y aller, alors les bases :
pour quitter, appuie 3 ou 4 fois sur Échap, puis tape :q! (pour ne pas sauver), ou ZZ ou :wq (pour sauver)
pour taper du texte, tape sur i, rentre ton texte, puis appuie sur échap.
Voilà pour ne pas se planter
Benoit
PS. La commande "vimtutor" est parfaite pour apprendre les bases avec vim
Dernière modification par pabix (Le 18/10/2006, à 15:52)
Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D
Hors ligne
#6 Le 18/10/2006, à 16:33
- paul@gloomoot
Re : Script Bash
merci pour ton aide mais je suis pas complètement à la masse je connais le :wq ^^
bon je viens de tester ton expression régulière mais elle ne marche pas bien parce qu'il n'y a pas forcément 4 éléments
est-ce qu'il y a moyen d'en faire une pour un nombre d'éléments indéterminé?
http://leblogdepaul.free.fr
Hors ligne
#7 Le 18/10/2006, à 16:36
- pabix
Re : Script Bash
Attends, une plus simple dans ce cas
:%s/\([^;]*\)/"\1"/g
:%s/;/,/g
Benoit
Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D
Hors ligne
#8 Le 18/10/2006, à 16:42
- paul@gloomoot
Re : Script Bash
ça marche bien mais il me rajoute une ligne avec "" entre chacune des lignes modifiées lors du premier passage....
une idée?
http://leblogdepaul.free.fr
Hors ligne
#9 Le 18/10/2006, à 16:52
- paul@gloomoot
Re : Script Bash
je crois avoir compris pourquoi
en fait il entoure de quote le retour chariot/entrée appelle ça comme tu veux
comment on fait pour lui dire tout sauf des ; et des retour chariot ?
http://leblogdepaul.free.fr
Hors ligne
#10 Le 18/10/2006, à 21:56
- Balkoth
Re : Script Bash
Tu peux simplement rajouter une commande pour supprimer tous les lignes ne contenant que "".
:%/^""$/d
Pas sûr de la syntaxe avec vi (vive emacs ), ça donne ça avec sed :
sed -e '/^""$/d' ton_fichier
Pour effectuer toutes les commandes d'un coup, en modifiant directement le fichier :
sed -ie 's/\([^;]*\)/"\1"/g; s/;/,/g; /^""$/d' ton_fichier
ça te fait un script d'une ligne, tu peux même faire un alias si tu préfères ^^
Hors ligne
#11 Le 19/10/2006, à 08:29
- bapoumba
Hors ligne
Pages : 1