SED - Expressão regular suspensa

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

SED - Expressão regular suspensa

Luciano de Souza-2
]]Caros,
estou em processo de aprendizado do comando sed.
Tenho arquivos que desejo renomear. Eles tem o seguinte padrão:

{Autor} - {Título}.epub

Por exemplo:

Max Hastings - Inferno, o mundo em guerra.epub

Quando gostaria que ficasse assim:

Inferno, o mundo em guerra - Max Hastings.epub

Em outras palavras, tenho o hífen como divisor. O que está antes,
quero deslocar para depois. O que está depois, quero deslocar para
antes.

Para obter o nome invertido pensei em fazer algo como:

echo "a - b.epub" | sed 's&(/w+)/s+\-/s+(/w+)\.epub&\2 - \1.epub&g

Observem que troquei o delimitador para & para que não houvesse
necessidade de escapar a expressão regular com "\".

O resultado deveria ser:

b - a.epub

O resultado, estranhamente, nem chegou a ser um erro. O comando ficou
simplesmente suspenso, como se houvesse a necessidade de alguma
complementação, não retornando o controle para o Bash.

Alguém teria ideia do que se passa? Seria algum problema relativo aos
retrovisores \1 e \2? É possível utilizar os retrovisores? Assim,
retrovisores, chamou-os o Aurélio Marinho Vargas, não sei se
tecnicamente, o nome é realmente este.

--
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
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: SED - Expressão regular suspensa

J.F.Salles Yandex
Luciano,

Não estou mais ligado nesse uso, mas acho que aqui tens um excelente
material específico para o sed:
http://cesarakg.freeshell.org/sed-1.html - Ao final da página tem a
continuidade para as partes 2 e 3.

Abraços,
--
J.F.Salles (NetHell) - GoHC - Linux User 496632
GNU/Linux Translation & Documentation Support


> ]]Caros,
> estou em processo de aprendizado do comando sed.
> Tenho arquivos que desejo renomear. Eles tem o seguinte padrão:
>
> {Autor} - {Título}.epub
>
> Por exemplo:
>
> Max Hastings - Inferno, o mundo em guerra.epub
>
> Quando gostaria que ficasse assim:
>
> Inferno, o mundo em guerra - Max Hastings.epub
>
> Em outras palavras, tenho o hífen como divisor. O que está antes,
> quero deslocar para depois. O que está depois, quero deslocar para
> antes.
>
> Para obter o nome invertido pensei em fazer algo como:
>
> echo "a - b.epub" | sed 's&(/w+)/s+\-/s+(/w+)\.epub&\2 - \1.epub&g
>
> Observem que troquei o delimitador para & para que não houvesse
> necessidade de escapar a expressão regular com "\".
>
> O resultado deveria ser:
>
> b - a.epub
>
> O resultado, estranhamente, nem chegou a ser um erro. O comando ficou
> simplesmente suspenso, como se houvesse a necessidade de alguma
> complementação, não retornando o controle para o Bash.
>
> Alguém teria ideia do que se passa? Seria algum problema relativo aos
> retrovisores \1 e \2? É possível utilizar os retrovisores? Assim,
> retrovisores, chamou-os o Aurélio Marinho Vargas, não sei se
> tecnicamente, o nome é realmente este.
>
> --
> 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
Loading...