Re: [Ubuntu-BR] SED - Dificuldades com as suas expressões regulares

2017-06-08 Por tôpico C de-Avillez
On Thu, 8 Jun 2017 11:41:33 -0300
luciano de souza  wrote:

> Caros,
> Estou escrevendo uma rotina para renomear arquivos, segundo padrão
> definido por expressão regular. Algo mais ou menos assim:
> 
> For oldname in ./*;
> Do
> Newname=`echo "$oldname" | sed -r -f patterns.sed`;
> mv "$oldname" "$newname";
> Done;
> 
> Mas não estou conseguindo lidar com as particularidades do SED. Não
> aceita "\d", mas tão somente "[:digit:]". Por outro lado, aceita \w,
> mas não aceita "\s"... Além disso, a que serem escapados muitos,
> realmente muitos caracteres.
> O que lhes pergunto é: existe algum modo de funcionamento do sed, que
> me permita criar expressões regulares corriqueiras, sem
> particularidades de sintaxe, sem tantos escapes que tanto dificultam a
> escrita e a leitura?
> Não sendo isso possível com o sed, conheceriam outra ferramenta,
> disponível em Shellscript com a qual pudesse obter este resultado?
> 

Provavelmente estás a usar a chamada BRE (Basic Regular Expression).
Seria mais fácil usando-se ERE (Extented Regular Expression).

'info sed' explica as diferenças (uma delas é que não é necessário
escapar-se tantos caracteres).

Talvez valha a pena instalar 'pinfo' e usa-lo ao invés de 'info'.

Cheers,

..C..


pgplP3C0ezVPA.pgp
Description: OpenPGP digital signature
-- 
Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece

Lista de discussão Ubuntu Brasil
Histórico, descadastramento e outras opções:
https://lists.ubuntu.com/mailman/listinfo/ubuntu-br


[Ubuntu-BR] SED - Dificuldades com as suas expressões regulares

2017-06-08 Por tôpico luciano de souza
Caros,
Estou escrevendo uma rotina para renomear arquivos, segundo padrão
definido por expressão regular. Algo mais ou menos assim:

For oldname in ./*;
Do
Newname=`echo "$oldname" | sed -r -f patterns.sed`;
mv "$oldname" "$newname";
Done;

Mas não estou conseguindo lidar com as particularidades do SED. Não
aceita "\d", mas tão somente "[:digit:]". Por outro lado, aceita \w,
mas não aceita "\s"... Além disso, a que serem escapados muitos,
realmente muitos caracteres.
O que lhes pergunto é: existe algum modo de funcionamento do sed, que
me permita criar expressões regulares corriqueiras, sem
particularidades de sintaxe, sem tantos escapes que tanto dificultam a
escrita e a leitura?
Não sendo isso possível com o sed, conheceriam outra ferramenta,
disponível em Shellscript com a qual pudesse obter este resultado?

-- 
Luciano de Souza

-- 
Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece

Lista de discussão Ubuntu Brasil
Histórico, descadastramento e outras opções:
https://lists.ubuntu.com/mailman/listinfo/ubuntu-br