Acho que o sed não suporta o atalho '\d', o jeito é usar uma lista no lugar,
por exemplo:
sed -r 's/^[+-]?(([0-9]+|[0-9]{1,3}(\.[0-9]{3})+)(\,[0-9]*)?|\,[0-9]+)$//'
O sed acima vai substituir um número válido por *nada*, aí se vc quiser validar
pode usar o wc para contar o número de palavras. Por exemplo:
NUMERO=`echo "1.2123.333,45" | sed -r
's/^[+-]?(([0-9]+|[0-9]{1,3}(\.[0-9]{3})+)(\,[0-9]*)?|\,[0-9]+)$//'`
[ `echo $NUMERO | wc -w` == 0 ] && echo valido || echo invalido
Nota: *Talvez* a opção "-r" não funcione no AIX, e vc precise escapar os
colchetes.
Qualquer dúvida estamos aí ;)
Abraços
Fernando
--- Em ter, 29/6/10, fsilva6 <[email protected]> escreveu:
De: fsilva6 <[email protected]>
Assunto: [shell-script] Expressão Regular Com SED
Para: [email protected]
Data: Terça-feira, 29 de Junho de 2010, 10:15
Senhores,
para validar um campo DECIMAL em java script utilizo a expressão
regular abaixo.
/^[+-]?((\d+|\d{1,3}(\.\d{3})+)(\,\d*)?|\,\d+)$/
Estou tentando migrar essa expressão para executa-la no AIX com SED e estou
tomando o seguinte erro.
sed: /^[+-]?((\d+|\d{1,3}(\.\d{3})+)(\,\d*)?|\,\d+)$/ is not a recognized
function.
Já fiz algumas alterações no SED mas até agora não obtive sucesso.
Alguém poderia me auxilar na resolução deste problema?
[As partes desta mensagem que não continham texto foram removidas]