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
---