Formater un fichier avec SED

Résolu/Fermé
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 - 28 avril 2011 à 12:55
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 28 avril 2011 à 16:45
Bonjour,

mon fichier a traiter contient plusieurs lignes de la sorte :

name='L'immobilier'
name='l'occitan'
name='Cap'horn'
name='CAP'Horn'

et j'ai besoin de formater mon fichier de la sorte afin d'echapper ma côte ' pour des INSERT sql en utilisant la syntaxe E''(je ne sais pas encore exactement la bonne syntaxe) :

name='LE'''immobilier'
name='lE'''occitan'
name='CapE'''horn'
name='CAPE'''Horn'

J'ai essayé cela avec SED :

sed -e "s/[a-zA-Z]'/E'''/g" fichier


mais cela ne fonctionne pas correctement.

Une idée?

Merci


A voir également:

4 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
28 avril 2011 à 13:00
Salut,

$ cat plop
name='L'immobilier'
name='l'occitan'
name='Cap'horn'
name='CAP'Horn'

$ sed "s/'/E\"&/2" plop
name='LE"'immobilier'
name='lE"'occitan'
name='CapE"'horn'
name='CAPE"'Horn'


;-))
0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
28 avril 2011 à 13:30
Merci zipe31 . Tu peux juste m'expliquer a quoi correspond &/2 ?
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
28 avril 2011 à 13:40
Le & est le méta caractère qui sert à reprendre la totalité du motif recherché dans la 1ère partie de la substitution. Ça évite de tout récrire. Ici ce n'était pas bien long (une quote simple) mais des fois c'est très appréciable ;-))

Quand au "2", ça demande de ne remplacer que la 2ème occurrence du motif recherché. Donc on n'effectue une substitution que sur la 2nd quote simple rencontrée.

Voir dans la FAQ sur "sed" tout ça y est expliqué ;-))
SED - Le méta-caractère "&"
SED - Les flags (Nième occurrence)
0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
Modifié par pcsystemd le 28/04/2011 à 14:25
Ok Merci beaucoup. Mais de la j'ai une interrogation car si j'ai mes lignes a inserer de la sorte :

insert into (bla,bla,bla) values ('1','jkl','L'immobilier');
ou bien
insert into (bla,bla,bla,bla,bla) values ('1','jkl','hui','L'immobilier','cap'horn');

je ne peux pas utiliser &/2 ?

De plus et je suis coupable le formatage que je dois avoir est :

name=E'L\'immobilier'
name=E'Cap\'horn'

et non

name='LE"'immobilier'
name='CapE"'horn'

Merci

L'accès au savoir est la première liberté que chaque homme devrait avoir.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
28 avril 2011 à 16:45
Au cas ou concernant le formatage :

sed "s/'/E&/1;s/'/\\\&/2"


Après c'est clair que s'il y a toute une ribambelle de quotes, c'est pas gagné ;-(
0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
28 avril 2011 à 16:09
Bon je me suis débrouiller autrement. Merci pour ton aide.
0