[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] testar nome de arquivo
From: |
João Olavo Baião de Vasconcelos |
Subject: |
Re: [shell-script] testar nome de arquivo |
Date: |
Wed, 8 Aug 2012 07:50:43 -0300 |
2012/8/7 Raphael R. O. <address@hidden>
> **
> O unico padrao que tenho nos pacote é o final... no exemplo que mando, o
> padrao seria "frapi.tar"
>
> So que quando rodo o comando, parece que ele tenta buscar dentro do
> arquivo, e nao no nome do arquivo...
>
file="$1"
> sed -r 's,(.*_)(frapi\.tar),\npack=\2,' $file
>
Sim, está buscando dentro do arquivo. Na verdade, vc deveria fazer:
sed -r 's,(.*_)(frapi\.tar),\npack=\2,' <<< $file
ou
echo $file | sed -r 's,(.*_)(frapi\.tar),\npack=\2,'
E vc não precisaria ainda pegar dois blocos da expressão. Não precisa do
(.*_), somente de .*_ e do segundo bloco de (). Aí é só usar o \1 na
substituição.
Mas ainda não entendi o que vc quer. Vc está testando se o nome de um
arquivo termina com a string "_frapi.tar"? Ou seja, "qqcoisa_frapi.tar"
bate, mas "qqcoisafrapi.tar" não?
Mas aí se o nome do arquivo bater nessa condição, vc muda o nome para
"[ENTER]pack=frapi.tar"?? Não entendi esse enter (\n)!
Vou chutar que vc só quer mesmo testar se o nome do arquivo termina com
"_frapi.tar". Se sim, entrar na condição do case correspondente.
Se for isso, não precisa nem de sed. Faça assim:
case $file in
*_frapi.tar) [comandos] ;;
*) exit 1 ;;
esac
Aí é só adicionar as outras condições.
Falous!!
--
João Olavo Baião de Vasconcelos
Analista de Sistemas - Infraestrutura
joaoolavo.wordpress.com
[As partes desta mensagem que não continham texto foram removidas]