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 18/10/2006, à 16: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 smile


http://leblogdepaul.free.fr

Hors ligne

#2 Le 18/10/2006, à 16: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, à 16: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, à 16: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, à 16: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 smile

Benoit

PS. La commande "vimtutor" est parfaite pour apprendre les bases avec vim

Dernière modification par pabix (Le 18/10/2006, à 16:52)


Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D

Hors ligne

#6 Le 18/10/2006, à 17: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, à 17: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, à 17: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? big_smile


http://leblogdepaul.free.fr

Hors ligne

#9 Le 18/10/2006, à 17: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, à 22: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 tongue), ç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, à 09:29

bapoumba

Re : Script Bash

Déplacé dans Programmation smile


| Ubuntu Forums |
J'aime les fraises.

Hors ligne