Soit :
$ 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...
--
Frédéric
http://www.gbiloba.org