Por padrão, sed
usa expressões regulares básicas . Em BRE, {
, }
, (
, )
atuam como caracteres comuns. Como tal, você precisa escapar do {
e }
:
sed -i 's/2014-[0-9]\{2\}-[0-9]\{2\}/2014-05-07/g' test
Você não precisaria escapar deles usando expressões regulares estendidas, por exemplo
sed -r -i 's/2014-[0-9]{2}-[0-9]{2}/2014-05-07/g' test
A opção -r
para sed
denota ERE:
-r, --regexp-extended
use extended regular expressions in the script.
Além disso, usar -e
é redundante no seu exemplo.