Re: [ssfr] sed : remplacer guillemets anglais par guillements français |
[ Thread Index |
Date Index
| More debianworld.org/shellscript-fr Archives
]
dlist@xxxxxxxxxx a écrit, samedi 1 novembre 2008, à 14:36 :
> Bonjour,
bonjour.
> J'ai plusieurs fichiers tex où il faudrait remplacer les " par des «»,
> je me dis que c'est pour sed ça.
Oui et non,
- une paire de guillemets peut s'étaler sur plusieurs lignes ;
- elles peuvent être éventuellement emboîtées ;
- en (La)TeX, il vaut mieux utiliser les commandes \og et \fg (quitte à
les redéfinir) ;
- suivant la nature du texte, certains « " » peuvent ne pas être des
guillemets --- même la parité ne permet pas de déterminer si ça ouvre
ou ça ferme : dans un polycopié sur le « shell », tu peux donner un
exemple de chaîne contenant une « double-quote », comme "\""...
Tu peux aussi vouloir essayer sur ce texte-ci :)
> le motif est
> "puis 0,1 ou plus espaces puis un mot puis 0,1 ou plus espaces et enfin"
Ben non, tu peux avoir plusieurs mots, éventuellement composés, et des
\commandes comme "\TeX".
> Ce motif doit être remplacé par
>
> «un_espace_insécable puis le mot puis un_espace_insécable puis »
>
> Faut traduire ça en sed maintenant, et c'est là que ça se complique
> (pour moi).
Tu peux essayer (GNU Sed --- sans garantie)
sed -i.old -re 's/"[[:space:]]*([^"]*)[[:space:]]*"/\\og \1 \\fg /g
(les commandes \og et \fg pourront gérer l'insécabilité des espaces).
Pour les multilignes, quelque chose comme
sed -i.old -nre '
H
${
g
s/"[[:space:]]*([^"]*)[[:space:]]*"/\\og \1 \\fg /g
p
}'
> Merci pour vos suggestions.
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.
Cherche aussi dans les archives de fctt (news:fr.comp.text.tex)...
--
Jacques L'helgoualc'h
---