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

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


* dlist@xxxxxxxxxx <dlist@xxxxxxxxxx> [2008-11-02 08:04:20 +0100] wrote :

> > Salut,
> > 
> > > J'ai plusieurs fichiers tex où il faudrait remplacer les " par des «»,
> > > je me dis que c'est pour sed ça.
> > > 
> > > le motif est 
> > > "puis 0,1 ou plus espaces puis un mot puis 0,1 ou plus espaces et enfin"
> > > 
> > > 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).
> > 
> > En perl :
> > 
> > perl -p -i.old -e 's/"\s+(\w+)\s+"/« $1 »/' fichier.txt
> 
> Désolé d'être mauvais joueur mais ça ne marche carrément pas ; sur mon
> fichier test, voici la sortie : 
> 
> "un"
>   "deux"
>            "un mot"
>         « un »
>  " un mot voilà  "
> pas de mot
> 
> et là non plus
> 
> 
> Seuls les guillemets de la 4e ligne ont été remplacés. 


Tout simplement car ton motif initial ne correspond pas à ton exemple.

Je cite : "puis 0,1 ou plus espaces puis un mot puis 0,1 ou plus espaces
et enfin"

Or dans ton exemple, la 5e ligne :

 " un mot voilà " <-- Ca fait trois mots là ! ;)

D'ailleurs, l'exemple de Xavier ne fonctionnera pas non plus !

Ceci devrait fonctionner (pas testé) :

perl -p -i.old -e 's/\s*"\s*(.*)\s*?"/« $1 »/'  fichier.txt

@+

-- 
.. ''`.  (\___/) E d i   S T O J I C E V I C
: :'  : (='.'=) http://www.debianworld.org 
`. `~'  (")_(") GPG: 0x1237B032
  `-

---


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