Formater un fichier avec SED

Résolu
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   -  
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Contributeur Dernière intervention   6 430
 
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 702 Date d'inscription   Statut Membre Dernière intervention   23
 
Merci zipe31 . Tu peux juste m'expliquer a quoi correspond &/2 ?
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
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 702 Date d'inscription   Statut Membre Dernière intervention   23
 
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   Statut Contributeur Dernière intervention   6 430
 
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 702 Date d'inscription   Statut Membre Dernière intervention   23
 
Bon je me suis débrouiller autrement. Merci pour ton aide.
0