Ajuda com regex! [RESOLVIDO]

1. Ajuda com regex! [RESOLVIDO]

José Lucas
MINEMAM

(usa Linux Mint)

Enviado em 05/09/2020 - 10:52h

Ola, estou fazendo um scripit que precisa verificar se uma string esta formatada, não to conseguindo fazer uma expressão que funcione neste caso.
Ex: Tenho a string "/media/hd2_160/samba/opl/DVD/SLUS_216.41.Innocent Life - A Futuristic Harvest Moon.iso"
preciso saber se esta formatado como algo assim: "ABCD_123_12.NOME DO_ARQUIVO - TESTE.iso"

Estou usando a seguinte expressão:
echo "/media/hd2_160/samba/opl/DVD/SLUS_216.41.Innocent Life - A Futuristic Harvest Moon.iso" | egrep -o "([A-Z]{4}\_[0-9]{3}\.[0-9]{2}\.[A-Z|a-z|0-9| |\-\_\.\:\(\)]{1,}\.[a-z|A-Z]{3})" 



  


2. MELHOR RESPOSTA

Ruan
ru4n

(usa Debian)

Enviado em 05/09/2020 - 11:12h

Tenta assim:
echo '/media/hd2_160/samba/opl/DVD/SLUS_216.41.Innocent Life - A Futuristic Harvest Moon.isos' | cut -f7 -d\/ | egrep -o '[A-Z]{4}_[0-9]{3}\.[0-9]{2}\..*\.[a-z|A-Z]{3}' 


3. Re: Ajuda com regex! [RESOLVIDO]

José Lucas
MINEMAM

(usa Linux Mint)

Enviado em 05/09/2020 - 11:37h

Isso mesmo! Valeu!


4. Re: Ajuda com regex! [RESOLVIDO]

Ruan
ru4n

(usa Debian)

Enviado em 05/09/2020 - 11:53h

Só um atento: se esse caminho mudar conforme a quantidade de subpastas:
/media/hd2_160/samba/opl/DVD/


Vc pode trocar o echo pelo basename para pegar apenas o nome do arquivo + extensão (isso descarta o comando cut também):
basename '/media/hd2_160/samba/opl/DVD/SLUS_216.41.Innocent Life - A Futuristic Harvest Moon.iso' | egrep -o '[A-Z]{4}_[0-9]{3}\.[0-9]{2}\..*\.[a-z|A-Z]{3}' 


O basename é ideal para esse tipo de situação, onde é necessário apenas o nome do arquivo sem o path completo.


5. Re: Ajuda com regex! [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 05/09/2020 - 17:41h


MINEMAM escreveu:

Ola, estou fazendo um scripit que precisa verificar se uma string esta formatada,
não to conseguindo fazer uma expressão que funcione neste caso.
Ex: Tenho a string "/media/hd2_160/samba/opl/DVD/SLUS_216.41.Innocent Life - A Futuristic Harvest Moon.iso"
preciso saber se esta formatado como algo assim: "ABCD_123_12.NOME DO_ARQUIVO - TESTE.iso"

Estou usando a seguinte expressão:
echo "/media/hd2_160/samba/opl/DVD/SLUS_216.41.Innocent Life - A Futuristic Harvest Moon.iso" | egrep -o "([A-Z]{4}\_[0-9]{3}\.[0-9]{2}\.[A-Z|a-z|0-9| |\-\_\.\:\(\)]{1,}\.[a-z|A-Z]{3})" 


Boa tarde.
Uma sugestão para "pegar" o campo em questão:
considerando que o separador de campos, é a "/", o campo pretendido é o ultimo, logo:
string="/media/hd2_160/samba/opl/DVD/SLUS_216.41.Innocent Life - A Futuristic Harvest Moon.iso"
awk -F"/" '{print $NF}' <<< "$string"
SLUS_216.41.Innocent Life - A Futuristic Harvest Moon.iso
Pega o Campo e valida
gawk -F"/" '{if($NF~/^[A-Z]{4}_[0-9]{3}\.[0-9]{2}\.[[:alpha:]_ -]+\.iso$/) print "Casou => "$NF;else print "Não Casou"}' <<< "$string"
Casou => SLUS_216.41.Innocent Life - A Futuristic Harvest Moon.iso


______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


6. Re: Ajuda com regex! [RESOLVIDO]

José Lucas
MINEMAM

(usa Linux Mint)

Enviado em 05/09/2020 - 17:51h

Interessante o basename, tinha esquecido dele, valeu pela ajuda.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts