shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Re: Trocar nome de arquivo


From: phfbettega
Subject: Re: [shell-script] Re: Trocar nome de arquivo
Date: Fri, 27 Jan 2017 12:43:23 -0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0

Olá Itamar, acho que a expansão de substituição é sempre gulosa, não sei se tem 
como evitar isso
com o glob normal. Mas com o glob extendido (shopt -s extglob) dá pra fazer.
Tem no Botequim
http://wiki.softwarelivre.org/TWikiBar/TWikiBarBirinaite#Ganhando_o_jogo_com_mais_coringa

var=GP02.CMDA.RECX
echo "${var/+([A-Z0-9])/BS}"
BS.CMDA.RECX

Não sei se tem alguma contra-indicação deixar essa opção ligada direto porque 
parece que
ela vem desligada na maioria das distros.
Abraços Paulo

On 27-01-2017 10:38, address@hidden [shell-script] wrote:


Leandro


Antes de dar uma dica é preciso considerar outra coisa:
Algumas substituições dadas no exemplo vão causar sobreposição:

GP01.CMDA e GP.CMDA iriam se tornar BS.CMDA
e
GP02.CMDA.RECX e RECX.CMDA.RECX iriam se tornar BS.CMDA.RECX

Então qq script deveria prever isso testando a existência e oferecer um forma 
de renomear alternativa, ou ter
isso setado para esse caso

A dica que o Janduy Euclides ofereceu é boa, mas não serve para seu caso, pois 
vais subsitituir até a última
ocorrência do ponto(.)

Alternativamente poderia ser assim

var1=GP02.CMDA.RECX

echo ${var1//*./BS.}
Resultado: BS.RECX ( não é o desejado )

echo "BS.${var1#*.}"
Resultado: BS.CMDA.RECX ( acho que é isso que deseja )


Reconsidere sua proposta pelo exposto acima, senão pode ter perda de informação

[]'s
Itamar



--------------------------------------------------------------------------------------------------------------
Enviado por: address@hidden
--------------------------------------------------------------------------------------------------------------


reply via email to

[Prev in Thread] Current Thread [Next in Thread]