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

---


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