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