Auteur: Edgar Bonet Date: À: guilde Sujet: Re: Remplacements de caractères indexés
Le mercredi 19 décembre, Frédéric Mantegazza a écrit : > $ cat text
> fs,2007,2007,hr,t8,tyv
> ddfsfd,dfdssf,2007,2007,5xgf6,gfgt
> sd,2008,2007,Fwvhw,x
>
> où je veux remplacer la date qui suite la deuxième virgule...
>
> Pourquoi ceci marche :
>
> $ cat text | perl -pe 's/(.*?),(.*?),\d{4}/\1,\2,2008/'
> fs,2007,2008,hr,t8,tyv
> ddfsfd,dfdssf,2008,2007,5xgf6,gfgt
> sd,2008,2008,Fwvhw,x
>
> et pas ça :
>
> $ cat text | sed -r 's/(.*?),(.*?),\d{4}/\1,\2,2008/'
> fs,2007,2007,hr,t8,tyv
> ddfsfd,dfdssf,2007,2007,5xgf6,gfgt
> sd,2008,2007,Fwvhw,x
>
> On dirait que le quantifieur ? (non avide) ne fonctionne pas en sed...
Et \d non plus.
$ cat text | sed -r 's/(.*),(.*),[0-9]{4}/\1,\2,2008/'
fs,2007,2008,hr,t8,tyv
ddfsfd,dfdssf,2007,2008,5xgf6,gfgt
sd,2008,2008,Fwvhw,x
$ cat text | sed -r 's/([^,]*),([^,]*),[0-9]{4}/\1,\2,2008/'
fs,2007,2008,hr,t8,tyv
ddfsfd,dfdssf,2008,2007,5xgf6,gfgt
sd,2008,2008,Fwvhw,x