Re: [ssfr] sed : remplacer guillemets anglais par guillements français

[ Thread Index | Date Index | More debianworld.org/shellscript-fr Archives ]


steve a écrit, lundi 3 novembre 2008, à 09:07 :
> Le 02-11-2008, à 10:19:39 +0100, Jacques L'helgoualc'h a écrit :
[...]
> >  - une paire de guillemets peut s'étaler sur plusieurs lignes ;
> 
> C'est le cas,

C'est traité assez facilement.

> >  - elles peuvent être éventuellement emboîtées ;
> 
> également ..

Là, c'est plus embêtant... Sed n'est pas doué pour l'arithmétique.
En cas de "debut "niveau 2" fin", tu vas récupérer un

« debut » niveau 2 « fin »

(ce qui n'est pas totalement erroné typographiquement, il me semble) mais il
faudrait

\og debut\og niveau 2\fg fin\fg 


[...]
> grep \" fichier.tex | wc -l

remarque pédante, mais on est sur shellscript-fr :)

 grep -cF \" fichier.tex


[...]
> > Tu peux essayer (GNU Sed --- sans garantie)
> > 
> >  sed -i.old -re 's/"[[:space:]]*([^"]*)[[:space:]]*"/\\og \1 \\fg /g
> 
> Pour les archives, la commande complète est :
> 
> sed -i.old -re 's/"[[:space:]]*([^"]*)[[:space:]]*"/\\og \1 \\fg /g'
> fichier_in.tex

Mea culpa --- l'espace entre \1 et \\fg est superflu, pas les deux autres.

[...]
> > Pour les multilignes, quelque chose comme
> > 
> >  sed -i.old -nre '
> > H
> > ${
> > 	g
> > 	s/"[[:space:]]*([^"]*)[[:space:]]*"/\\og \1 \\fg /g
> > 	p
> > }'
> 
> 
> J'ai essayé cette expression en la mettant sur une ligne, mais il y a
> une erreur :
> 
> sed -i.old -nre 'H ${g s/"[[:space:]]*([^"]*)[[:space:]]*"/\\og \1 \\fg
> /g p}' partie3b.tex
> 
> sed: -e expression n°1, caractère 3: caractères inutiles après la
> commande

Quand tu regroupes sur une ligne, tu dois séparer les commandes par des
points-virgules :

sed -i.old -nre \
 'H;${g;s/"[[:space:]]*([^"]*)[[:space:]]*"/\\og \1\\fg /g;p}' \
 partie3b.tex

Tu pourrais même faire

 sed -i.old -nre 'commande1 ; commande2 ; ... ' *.tex

mais ...
[...]
> > Sur un  texte purement  littéraire, ça pourrait  passer, mais en  cas de
> > doute j'essaierai plutôt avec le C-M-% interactif d'Emacs.
> 
> Connais pas.

Vi aussi doit savoir faire du remplace-regexp interactif ?
-- 
Jacques L'helgoualc'h

---


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/