Re: [shell-script] expressão regular

2007-12-05 Por tôpico Bruno Gunter Fricke
Grande Benito,

Tem como fazer uma condição dentro de expressões regulares. Porém, se o
texto for muito pequeno, porque não simplesmente casar duas letras
seguidas de números e letras com até "x" caracteres?
Que tal usar os parênteses para isso? Por exemplo: (A|1), ele diz que
aquele caracter precisa ser um "A" ou "1" para casar a string.
Daí, basta apenas usar o que você deseja, as seqûencias como usar o
[A-Za-z0-9]. 

Espero ter ajudado.

[]'s
Gunter

Em Qua, 2007-12-05 às 02:46 -0200, Josenivaldo Benito Junior escreveu:
> Olá turma,
> 
> Estou apanhando de uma expressão regular. Para ser sincero já não sei
> dizer
> se ela é possível (deve ser o sono).
> 
> Preciso pegar strings do tipo:
> 
> GG48LH
> JH23
> JH45ER
> FJ87SA76
> 
> Resumindo:
> 
> Sempre tem duas letras (de A até Z) seguidas de dois números (de 0 até
> 9),
> podendo estar seguidos mais duas letras, podendo estar seguido de mais
> dois
> números. (duas letras,dois nros., duas letras, dois nros). Mas a
> informação
> pode ter 2,4,6 ou 8 letras (1,2,3 ou 4 conjuntos de letras e números).
> 
> O que são essas coisas? Coordenadas em formato World Locator. De fato
> podem
> ir até 12 algarismos, o comum é 4 ou 6. Na aplicação que estou
> tentando
> capturar podem chegar a 8.
> 
> Tentei algumas coisas básicas. O mais próximo que cheguei foi:
> 
> [A-Z]{2}[0-9]{2}
> 
> Que pega um par de letras somente se for seguido de um par de números.
> Para
> uma string tipo GG48LH23JV vai funcionar em dois matches, tem algum
> problema
> nisso?
> 
> Pegar um par de letras+um par de números e assim por diante, não
> resolve
> toda a situação, pois em 90% dos casos são usados 6 algarismos (ex:
> GG67MH).
> 
> Alguém pode me dar uma dica?
> 
> Valeu.
> Benito
> 
> [As partes desta mensagem que não continham texto foram removidas]
> 
> 
> 
> 
> 
>  


[As partes desta mensagem que não continham texto foram removidas]



[shell-script] Re: expressão regular

2007-12-05 Por tôpico voyeg3r
--- Em shell-script@yahoogrupos.com.br, "Josenivaldo Benito Junior"
<[EMAIL PROTECTED]> escreveu
>
> Olá turma,
> 
> Estou apanhando de uma expressão regular. Para ser sincero já não
sei dizer
> se ela é possível (deve ser o sono).
> 
> Preciso pegar strings do tipo:
> 
> GG48LH
> JH23
> JH45ER
> FJ87SA76
> 
> Resumindo:
> 
> Sempre tem duas letras (de A até Z) seguidas de dois números (de 0
até 9),
> podendo estar seguidos mais duas letras, podendo estar seguido de
mais dois
> números. (duas letras,dois nros., duas letras, dois nros). Mas a
informação
> pode ter 2,4,6 ou 8 letras (1,2,3 ou 4 conjuntos de letras e números).
> 
> O que são essas coisas? Coordenadas em formato World Locator. De
fato podem
> ir até 12 algarismos, o comum é 4 ou 6. Na aplicação que estou tentando
> capturar podem chegar a 8.
> 
> Tentei algumas coisas básicas. O mais próximo que cheguei foi:
> 
> [A-Z]{2}[0-9]{2}


se o conjunto de números pode ir até 6 faça:

[A-Z]{2}[0-9]{2,6}



> 
> Que pega um par de letras somente se for seguido de um par de
números. Para
> uma string tipo GG48LH23JV vai funcionar em dois matches, tem algum
problema
> nisso?
> 
> Pegar um par de letras+um par de números e assim por diante, não resolve
> toda a situação, pois em 90% dos casos são usados 6 algarismos (ex:
GG67MH).
> 
> Alguém pode me dar uma dica?
> 
> Valeu.
> Benito
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




[shell-script] Re: Sugestão

2007-12-05 Por tôpico voyeg3r
Creio que um wiki seria o ideal, não acha?


--- Em shell-script@yahoogrupos.com.br, "Marcelo Salhab Brogliato"
<[EMAIL PROTECTED]> escreveu
>
> Olá a todos,
> 
> sou cadastro na lista a algum tempo e venho acompanhando o
> maravilhoso trabalho que cada um aqui faz, ajudando e compartilhando
> conhecimento.
> Por enquanto, não sei muita coisa sobre sobre shell-script,
> então acabo mais lendo que participando. Mas espero daqui a
> um tempo (um longo tempo, rs) eu possa também estar ajudando!
> Porém, tive uma idéia! Que tal criarmos um local onde os moderadores
> possam colocar os scripts criados por pessoas da lista... claro
> que com direitos autorais, e somente com autorização dos criadores.
> Podemos ligar tópicos de problemas comuns aos scripts e permitir
> buscas. Além disso, podemos criar níveis de solução, de uma básica
> até uma avançada. Qualquer um pode contribuir melhorando, indicando
> bugs, etc.
> 
> Bom, estou disposto a iniciar um projeto deste tipo, e também
> consigo um servidor para hospedarmos isso (99% de certeza).
> 
> Aguardo um retorno dos amigos.
> 
> Um abraço de quem muito aprende com vocês,
> Salhab
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




Re: [shell-script] Scripts do ano

2007-12-05 Por tôpico Halexsandro de Freitas Sales
Saudações a todos da lista...

Só para registrar minha opniao (não q isto importe muito)

Acho uma boa idéia, pois muitas vezes as pessoas vêm até a lista com
suas dúvidas e mandam apenas uma parte de seus scripts (o motivo só Deus
sabe) para serem analizados e depois disso acabou, acho que algumas nem
dão um retorno se funcionou devidamente...

Isso poderia servir para icentivar o grupo a enviar seus scripts
completos para concorrer e ao mesmo tempo teriamos um acervo de scripts
com diversas funções para uso e consulta , ou seja, tornaria a lista
mais rica...

obs: Eles poderião ser enviados com um cabeçalho padrão:
nome do criador, versão, data de criação, data da ultima versao...

Um abração a todos e T+


Em Ter, 2007-12-04 às 22:24 -0200, Julio C. Neves escreveu:
> Café com leite não Elias, isso pra mim talha. Tem de ser chope sem
> colarinho. :)
> 
> Peço a todos da lista que copiem o script abaixo, cole-o em um arquivo
> e
> execute-o. Fiz em menos de 30 minutos, vamos melhorá-lo (p.ex. fazendo
> um
> retângulo no entorno com cor de fundo branca).
> 
> Abraços,
> Julio
> 
> #!/bin/bash
> clear
> lin=2
> col=$(($(tput cols) / 2))
> c=$((col-1))
> tput setaf 2; tput bold
> for ((i=1; i<20; i+=2))
> {
> tput cup $lin $col
> for ((j=1; j<=i; j++))
> {
> echo -n \*
> }
> let lin++
> let col--
> }
> tput sgr0; tput setaf 3
> for ((i=1; i<=2; i++))
> {
> tput cup $((lin++)) $c
> echo '|||'
> }
> tput cup $lin $((c - 4)); echo BOAS FESTAS
> let c++
> tput setaf 1; tput bold
> for ((i=1; i<=15; i++))
> {
> li=$((RANDOM % 9 + 3))
> ini=$((c-li+2))
> fim=$((c+li+2))
> co=$((RANDOM % (li-2) * 2 + 1 + ini))
> tput cup $li $co
> echo o
> }
> tput cup $((lin+2)) 0; tput civis; read -sn1; tput sgr0
> 
> Em 04/12/07, Elias Andrade <[EMAIL PROTECTED]> escreveu:
> >
> > Tive uma idéia meio tosca vendo esse título:
> >
> > "Prêmio Script do Ano".
> >
> > Ps: O Julio César Neves tem de ser Café com Leite, senão não vale.
> >
> > Leonardo Gomes escreveu:
> > >
> > > puts kra, deixa eu ver aki
> > > posso colocar para baixar no outlook aki meus 3 gb e separar e t
> > > encaminhar
> > > ou se conseguir encaminhar todos pelo outlook tbm
> > >
> > > Em 04/12/07, Alan Diones <[EMAIL PROTECTED] 40imicro.com.br>
> > > > escreveu:
> > > >
> > > > como vc em enviaria?
> > > > [EMAIL PROTECTED]   > alandiones%40imicro.com.br>
> > > , pode ser nesse
> > > > email?
> > > > - Original Message -
> > > > From: Leonardo Gomes
> > > > To: shell-script@yahoogrupos.com.br 40yahoogrupos.com.br>
> > > 
> > > 
> > > > Sent: Tuesday, December 04, 2007 1:16 PM
> > > > Subject: Re: [shell-script] Scripts do ano
> > > >
> > > > kra aqui no meu gmail tem todos de todos os anos.
> > > >
> > > > Em 04/12/07, Alan Diones <[EMAIL PROTECTED] 40imicro.com.br>
> > > >
> > > > escreveu:
> > > > >
> > > > > Algum amigo da lista, por acaso possui todos os emails
> divulgados na
> > > > > mesma desde o inicio desse ano?, estou com uma idéia de monta
> um cd
> > de
> > > > > script na minhas férias em dezembro e anexa-los num
> arquivo .zip
> > > depois,
> > > > > agradeço.
> > > > > - Original Message -
> > > > > From: Tiago Machado (aka gar0t0)
> > > > > To: shell-script@yahoogrupos.com.br 40yahoogrupos.com.br>
> > > 
> > >  40yahoogrupos.com.br>
> > > > > Sent: Tuesday, December 04, 2007 11:08 AM
> > > > > Subject: Re: [shell-script] Re: Criticas sobre a lista
> > > > >
> > > > > Pra mim sempre chega normal, e eu só acesso via browser :)
> > > > > isto parece problema de encode do seu browser (ou não ?)
> > > > >
> > > > > Em 04/12/07, Cristiano Ferrari
> <[EMAIL PROTECTED]
> > > 
> > > > >
> > > > > escreveu:
> > > > > >
> > > > > > --- Em shell-script@yahoogrupos.com.br 40yahoogrupos.com.br>
> > >  > >
> > > > 
> > > > > ,
> > > > > > Fábio Gomes <[EMAIL PROTECTED]> escreveu
> > > > > > > Cristiano,
> > > > > > >
> > > > > > >
> > > > > > > Veja...
> > > > > > >
> > > > > > > "Em 02/12/07, miguelcm86 <[EMAIL PROTECTED]
> > > > > > > > escreveu:"
> > > > > > >
> > > > > > > Este e-mail veio no corpo de um dos e-mails respondidos na
> > lista,
> > > > ele
> > > > > > > nao limpa do corpo do e-mail.
> > > > > > > Este ultimo e-mail para exemplo foi enviado as 11:30am de
> hj :)
> > > > > > >
> > > > > > > Fábio Gomes
> > > > > > >
> > > > > >
> > > > > > Ah! aí então tem uma diferença. Eu desabilitei o recebimento
> de
> > > > > > e-mails das listas que participo. Só as acesso via browser.
> E no
> > > > > > browser ocorre o corte corretamente.
> > > > > >
> > > > > > Nunca tinha atentado para o problema nos e-mails.
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > > [As partes desta mensagem que não continham texto foram
> removidas]
> > > > >
> > > > > [As partes desta mensagem

Re: [shell-script] Renomear arquivos em massa?

2007-12-05 Por tôpico Julio C. Neves
Fala Vinícius,
isso não é um expressão regular, é uma expanão de parâmetro. Vc pode
aprender isso, com um monte de exemplos,
aqui
.
-- 
Abraços,
Julio
Feliz Natal
:wq

Em 05/12/07, Vinícius de Figueiredo Silva <[EMAIL PROTECTED]> escreveu:
>
>   On Dec 5, 2007 9:38 AM, Flavio Junior <[EMAIL 
> PROTECTED]>
> wrote:
> >
> > Existe um tal de "rename" pra isso.. mas eu não gosto :P
> >
> > faça:
> > $ for file in *.[jJ][Pp][Gg]; do echo mv $file ${file//_/}; done
> >
> > Eu to levando em conta q o nome dos arquivos são todos:
> > foto_1.jpg
> > foto_2.jpg
> > foto_3.jpg
> >
> > Se não for isso, de mais informações :)
> >
> > Veja q eu deixei um "echo" ali no for, se for exatamente o que vc
> > quer, só remove-lo.
> >
> > --
> >
> > Flávio do Carmo Júnior
>
> Maneiro, não sabia que podia usar expressões regulares ali no mv! :]
>
> --
> Vinícius.
> personal site - http://vinicius.oitobits.net
> gaming blog - http://www.oitobits.net
>  
>



-- 
Abraços,
Julio
Feliz Natal
:wq


[As partes desta mensagem que não continham texto foram removidas]



Re: [shell-script] Renomear arquivos em massa?

2007-12-05 Por tôpico Tiago Barcellos Peczenyj
O nome desses arquivos seguem um padrão?

Se sim, pense em utilizar o comando rename.

Outra alternativa é usar o zzarrumanome das funçõeszz

http://funcoeszz.net/

On 12/5/07, Rafael Tomelin <[EMAIL PROTECTED]> wrote:
>
> Olá pessoal,
>
> Como faço para renomear arquivos em massa?
> Tipo quero fazer um "for" e todos os arquivos que tiverem o "_" tirar o
> mesmo ou renomear para foto1.jpg.
>
> Como posso fazer isso?
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 
>



-- 
Tiago B Peczenyj
Linux User #405772

http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"


[As partes desta mensagem que não continham texto foram removidas]



Re: [shell-script] expressão regular

2007-12-05 Por tôpico Flavio Junior
Se a ER do Tiago não resolver, seria interessante voce postar algumas
linhas completas do arquivo..

Fica dificil montarmos uma ER sem saber onde ela pode falhar, da forma
que vc passou não da pra saber o q mais poderia ter na linha.


--

Flávio do Carmo Júnior

On Dec 5, 2007 9:25 AM, Tiago Barcellos Peczenyj <[EMAIL PROTECTED]> wrote:
>
>
>
>
>
>
> Essa ER serve?
>
>  ([A-Z]{2}[0-9]{2})+[A-Z]{2}?
>
>  $ cat xxx
>  GG48LH
>  JH23
>  JH45ER
>  FJ87SA76
>
>  $ sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/' xxx
>  |GG48LH|
>  |JH23|
>  |JH45ER|
>  |FJ87SA76|
>
>
>
>  On 12/5/07, Josenivaldo Benito Junior <[EMAIL PROTECTED]> wrote:
>  >
>  > Olá turma,
>  >
>  > Estou apanhando de uma expressão regular. Para ser sincero já não sei
>  > dizer
>  > se ela é possível (deve ser o sono).
>  >
>  > Preciso pegar strings do tipo:
>  >
>  > GG48LH
>  > JH23
>  > JH45ER
>  > FJ87SA76
>  >
>  > Resumindo:
>  >
>  > Sempre tem duas letras (de A até Z) seguidas de dois números (de 0 até
> 9),
>  > podendo estar seguidos mais duas letras, podendo estar seguido de mais
>  > dois
>  > números. (duas letras,dois nros., duas letras, dois nros). Mas a
>  > informação
>  > pode ter 2,4,6 ou 8 letras (1,2,3 ou 4 conjuntos de letras e números).
>  >
>  > O que são essas coisas? Coordenadas em formato World Locator. De fato
>  > podem
>  > ir até 12 algarismos, o comum é 4 ou 6. Na aplicação que estou tentando
>  > capturar podem chegar a 8.
>  >
>  > Tentei algumas coisas básicas. O mais próximo que cheguei foi:
>  >
>  > [A-Z]{2}[0-9]{2}
>  >
>  > Que pega um par de letras somente se for seguido de um par de números.
>  > Para
>  > uma string tipo GG48LH23JV vai funcionar em dois matches, tem algum
>  > problema
>  > nisso?
>  >
>  > Pegar um par de letras+um par de números e assim por diante, não resolve
>  > toda a situação, pois em 90% dos casos são usados 6 algarismos (ex:
>  > GG67MH).
>  >
>  > Alguém pode me dar uma dica?
>  >
>  > Valeu.
>  > Benito
>  >
>  > [As partes desta mensagem que não continham texto foram removidas]
>  >
>  >
>  >
>
>  --
>  Tiago B Peczenyj
>  Linux User #405772
>
>  http://peczenyj.blogspot.com/
>  "what does not kill us makes us stronger"
>
>
>
>  [As partes desta mensagem que não continham texto foram removidas]
>
>
>
>  


Re: [shell-script] Renomear arquivos em massa?

2007-12-05 Por tôpico Vinícius de Figueiredo Silva
On Dec 5, 2007 10:15 AM, Julio C. Neves <[EMAIL PROTECTED]> wrote:
>
> Fala Vinícius,
>  isso não é um expressão regular, é uma expanão de parâmetro. Vc pode
>  aprender isso, com um monte de exemplos,
>
> aqui
>
>  .
>  --
>  Abraços,
>  Julio
>  Feliz Natal
>  :wq
>

Obrigado pelas dicas.
Vou estudar o material.

-- 
Vinícius.
personal site - http://vinicius.oitobits.net
gaming blog - http://www.oitobits.net


[shell-script] consistência na variável

2007-12-05 Por tôpico Rafael A. Gazzoni
Salve Salve pessoal...

To tentando fazer um scriptzinho para verificar se a variável digitada
pelo usuário é consistente ou nao! :)

tentei fazer de um jeito simples e deu certo

-
echo "Digite um IP"
read IP

case ${IP} in
[0-9]*) echo "valido" ;;
*) echo "invalido" ;;
esac


mas quando tento fazer a consistência toda da variável respeitando
(x.x.x.x) nao da certo... :(


case ${IP} in
[0-9]{1-3}\.[0-9]{1-3}\.[0-9]{1-3}\.[0-9]{1-3}*) echo "valido" ;;
*) echo "invalido" ;;
esac


alguém já tentou fazer isso?

Desde já Obrigado!
Abraço...



Re: [shell-script] Substituir várias linhas em branco por uma linha em branco

2007-12-05 Por tôpico [EMAIL PROTECTED]
Fantástico Flavio!

Grande idéia. Desde que não se tenho outro tipo qualquer de linha repetida.

$ uniq test.txt

Isto foi bem limpo.

Até
Rudson R. Alves

> Hm... Seguindo a ideia de que uma linha vazia é igual a outra linha
> vazia...
>
> [EMAIL PROTECTED] ~]# cat txt
> xxx:aaa,eee,bbb
>
> aaa:ddd
>
> adfa
>
> adfa
> [EMAIL PROTECTED] ~]# cat txt | uniq
> xxx:aaa,eee,bbb
>
> aaa:ddd
>
> adfa
>
> adfa
> [EMAIL PROTECTED] ~]#
>
> --
>
> Flávio do Carmo Júnior
>
> On Dec 5, 2007 1:17 PM, [EMAIL PROTECTED]
>  <[EMAIL PROTECTED]
> > wrote:
> >
> >
> >
> >
> >
> >
> > Olá pessoal,
> >
> > A algum tempo que vinha tentando encontrar alguma forma, menos
> > deselegante possível, de substituir várias linhas em branco em
> > seqüência, por apenas uma linha em branco. Por exemplo:
> >
> > $ cat teste.txt
> > 
> >
> > 
> >
> > 3
> >
> > 445
> > 56
> > $ _
> >
> > deve ficar assim:
> >
> > $ cat teste-new.txt
> > 
> >
> > 
> >
> > 3
> >
> > 445
> > 56
> > $ _
> >
> > Fiz isto com a linha
> >
> > $ sed ':i ; $! N; s/\n/N/ ; t i ; s/N\{3,\}/NN/g ; s/N/\n/g' test.txt
> >
> > Para um texto qualquer é conveniente substituir o "N" por algum caracter
> > como "µ", "Ø", ou algum caracter não existente no texto.
> >
> > Como não encontrei outras soluções na rede, resolvi expor aqui a idéia.
> >
> > Explicação:
> > O sed está dividido em três comandos.
> > 1 :i ; $! N; s/\n/N/; t i => faz um laço no texto e substitui todas
> > alimentações de linha (\n) pelo caracter "N"
> > 2 s/N\{3,\}/NN/g => substitui todas as ocorrências de três N's
> > (N{3,}) ou mais, por dois N (uma linha em branco)
> > 3 s/N/\n/g => substitui os Ns por alimentação de linha (\n)
> >
> > Se alguém tem alguma outra solução mais ou menos elegante para isto?
> > awk, outro sed, combinações diferentes de comandos...
> >
> > Até,
> > Alves
> >
>
>  



Re: [shell-script] Re: expressão regular

2007-12-05 Por tôpico André Saunite
Fala Benito!

O problema é que você tá usando o grep em vez do egrep! O grep não é
muito bom com expressões regulares mais complexas, para essas é
preciso utilzar o egrep.

[ 16:56:30:eandsau@ ~ $ ] echo GG48LH33|grep "([A-Z]{2}[0-9]{2})+[A-Z]{2}?"
[ 16:56:37:eandsau@ ~ $ ] echo GG48LH33|egrep "([A-Z]{2}[0-9]{2})+[A-Z]{2}?"
GG48LH33

Abração!
André Saunite

On Dec 5, 2007 4:56 PM, Josenivaldo Benito Junior
<[EMAIL PROTECTED]> wrote:
>
>
>
>
>
>
> Só acrescentando,
>
>  o site http://regexpal.com/
>
>  Também interpreta ao ER do Thiago diferente. Ele da match em strings de 6
>  digitos mas não da match em 4 digitos nem em 8 como o sed. Alguma
> explicação
>  para isso?
>
>  Exemplo usado no site:
>
>  JJ34 => não pega
>  GG47LH => pega
>  FG37LL33 => não pega
>  FG37LL33JK ==> pega
>
>  Todas são válidas. No sed fica assim:
>
>
>  [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
>  > cat ttt | sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
>  |JJ34|
>  |GG47LH|
>  |FG37LL33|
>  |FG37LL33JK|
>
>  Ou seja, pega todas!
>
>  Muito obrigado,
>  Benito.
>
>
>  On 12/5/07, Josenivaldo Benito Junior <[EMAIL PROTECTED]> wrote:
>  >
>
>  > Oi,
>  >
>  > eu acho que expressei-me mau.
>  >
>  > não existe a forma
>  >
>  > GG482733 (que sua expressão pegaria)
>  >
>  > O formato correto é: duas letras+dois números+duas letras+dois
>  > números+duas letras
>  >
>  > O comprimento total é no máximo 12, mas o mais comum é 4 ou 6 como por
>  > exemplo:
>  >
>  > GG48LH
>  > GG67
>  > GG48
>  > JH32HG
>  > ...
>  >
>  > É mais ou menos assim:
>  >
>  > GG -> indica uma grade grande (de latitude e longitude) (quadrada)
>  > GG48 -> se você dividir o quadro GG em pedacinhos (o tamanho não vem ao
>  > caso), GG48 representa um dos pedacinhos de GG (um quadro)
>  > GG48LH -> novamente, divide o quadro GG48 em vários pedaços e GG48LH é um
>  > desses pedaços, GG48JG é outro e assim vai.
>  >
>  > Exemplo prático:
>  >
>  > O localizador da minha residência é GG67MH (com 6 digitos). Dependendo da
>  > aplicação eu posso informar:
>  >
>  > GG67 (menos preciso)
>  > GG67MH (mais preciso)
>  >
>  > Então, o comum na aplicação é aparecerem localizadores, um por linha,
>  > assim:
>  >
>  > GG67
>  > GG35AF
>  > GG67MH
>  > GG48LH
>  > GG67LH
>  > DF45OP
>  > DF54
>  >
>  > Eventualmente podem aparecer:
>  >
>  > GG67AF33
>  > JH34RD25ES
>  >
>  > Mas não estou me preocupando com estes casos, posso cortá-los em 6
> digitos
>  > sem perda de informação relevante à minha aplicação. Cortando esses dois
>  > exemplo fica:
>  >
>  > GG67AF
>  > JH34RD
>  >
>  > Mas, não posso aumentar um grid de 4 digitos para para 6 arbitrariamente,
>  > por exemplo:
>  >
>  > usuário entra com GG48
>  > eu não posso assumir GG48LH ou GG48JH ou GG48EJ ... tenho que considerar
>  > apenas GG48
>  >
>  > O que eu tentei fazer inicialmente era consistir qualquer sequencia
>  > agrupada de duas letras+dois numeros+duas letras+dois numeros e assim por
>  > diante. Só para ter certeza que não entrem coisas inválidas como?
>  >
>  > GGLH
>  > ou
>  > 2235
>  > ou
>  > 22LH
>  > (tem que começar por letra obrigatoriamente e sempre apos duas letras vem
>  > um numero, depois pode vir duas letras e assim vai)
>  >
>  > De fato, o que preciso é que, independente do comprimento (que eu sempre
>  > vou garantir ser maior que 4), a string comece por duas letras seguidas
> por
>  > dois numeros, eventualmente seguidos por mais duas letras que,
>  > eventualmente, podem estar seguidas de dois números e assim por diante.
>  >
>  > A expressão do Thiago acertou na lata. Mas, existe algum motivo especial
>  > para não funcionar no grep? Tipo:
>  >
>  > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
>  > > echo GG48LH|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
>  > |GG48LH|
>  >
>  > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
>  > > echo GG48|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
>  > |GG48|
>  >
>  > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
>  > > echo GG48LH33|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
>  > |GG48LH33|
>  >
>  > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
>  > > echo GG48LH33|grep '([A-Z]{2}[0-9]{2})+[A-Z]{2}?'
>  >
>  > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
>  > > echo GG48LH33|grep "([A-Z]{2}[0-9]{2})+[A-Z]{2}?"
>  >
>  >
>  > O grep não imprime o match. Comi bronha?
>  >
>  >
>  > Obrigado pelas dicas de todos
>  > Abraço
>  > Benito
>  >
>  > >
>  >
>  >
>  > On 12/5/07, voyeg3r < [EMAIL PROTECTED]> wrote:
>  > >
>  > > --- Em
> shell-script@yahoogrupos.com.br,
>  > > "Josenivaldo Benito Junior"
>  > > <[EMAIL PROTECTED]> escreveu
>  > > >
>  > > > Olá turma,
>  > > >
>  > > > Estou apanhando de uma expressão regular. Para ser sincero já não
>  > > sei dizer
>  > > > se ela é possível (deve ser o sono).
>  > > >
>  > > > Preciso pegar strings do tipo:
>  > > >
>  > > > GG48LH
>  > > > JH23
>  > > > JH45ER
>  > > > FJ87SA76
>  > > >
>  > > > Resumindo:
>  > > >
>  > > > Sempre tem duas letras (de A até Z) seguidas de dois números (de 0
>  > >

Re: [shell-script] Re: expressão regular

2007-12-05 Por tôpico Josenivaldo Benito Junior
Oi,

eu acho que expressei-me mau.

não existe a forma

GG482733 (que sua expressão pegaria)

O formato correto é: duas letras+dois números+duas letras+dois números+duas
letras

O comprimento total é no máximo 12, mas o mais comum é 4 ou 6 como por
exemplo:

GG48LH
GG67
GG48
JH32HG
...

É mais ou menos assim:

GG -> indica uma grade grande (de latitude e longitude) (quadrada)
GG48 -> se você dividir o quadro GG em pedacinhos (o tamanho não vem ao
caso), GG48 representa um dos pedacinhos de GG (um quadro)
GG48LH -> novamente, divide o quadro GG48 em vários pedaços e GG48LH é um
desses pedaços, GG48JG é outro e assim vai.

Exemplo prático:

O localizador da minha residência é GG67MH (com 6 digitos). Dependendo da
aplicação eu posso informar:

GG67 (menos preciso)
GG67MH (mais preciso)

Então, o comum na aplicação é aparecerem localizadores, um por linha, assim:

GG67
GG35AF
GG67MH
GG48LH
GG67LH
DF45OP
DF54

Eventualmente podem aparecer:

GG67AF33
JH34RD25ES

Mas não estou me preocupando com estes casos, posso cortá-los em 6 digitos
sem perda de informação relevante à minha aplicação. Cortando esses dois
exemplo fica:

GG67AF
JH34RD

Mas, não posso aumentar um grid de 4 digitos para para 6 arbitrariamente,
por exemplo:

usuário entra com GG48
eu não posso assumir GG48LH ou GG48JH ou GG48EJ ... tenho que considerar
apenas GG48

O que eu tentei fazer inicialmente era consistir qualquer sequencia agrupada
de duas letras+dois numeros+duas letras+dois numeros e assim por diante. Só
para ter certeza que não entrem coisas inválidas como?

GGLH
ou
2235
ou
22LH
(tem que começar por letra obrigatoriamente e sempre apos duas letras vem um
numero, depois pode vir duas letras e assim vai)

De fato, o que preciso é que, independente do comprimento (que eu sempre vou
garantir ser maior que 4), a string comece por duas letras seguidas por dois
numeros, eventualmente seguidos por mais duas letras que, eventualmente,
podem estar seguidas de dois números e assim por diante.

A expressão do Thiago acertou na lata. Mas, existe algum motivo especial
para não funcionar no grep? Tipo:

[rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> echo GG48LH|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
|GG48LH|

[rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> echo GG48|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
|GG48|

[rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> echo GG48LH33|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
|GG48LH33|

[rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> echo GG48LH33|grep '([A-Z]{2}[0-9]{2})+[A-Z]{2}?'

[rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> echo GG48LH33|grep "([A-Z]{2}[0-9]{2})+[A-Z]{2}?"


O grep não imprime o match. Comi bronha?


Obrigado pelas dicas de todos
Abraço
Benito

>


On 12/5/07, voyeg3r <[EMAIL PROTECTED]> wrote:
>
>   --- Em shell-script@yahoogrupos.com.br,
> "Josenivaldo Benito Junior"
> <[EMAIL PROTECTED]> escreveu
> >
> > Olá turma,
> >
> > Estou apanhando de uma expressão regular. Para ser sincero já não
> sei dizer
> > se ela é possível (deve ser o sono).
> >
> > Preciso pegar strings do tipo:
> >
> > GG48LH
> > JH23
> > JH45ER
> > FJ87SA76
> >
> > Resumindo:
> >
> > Sempre tem duas letras (de A até Z) seguidas de dois números (de 0
> até 9),
> > podendo estar seguidos mais duas letras, podendo estar seguido de
> mais dois
> > números. (duas letras,dois nros., duas letras, dois nros). Mas a
> informação
> > pode ter 2,4,6 ou 8 letras (1,2,3 ou 4 conjuntos de letras e números).
> >
> > O que são essas coisas? Coordenadas em formato World Locator. De
> fato podem
> > ir até 12 algarismos, o comum é 4 ou 6. Na aplicação que estou tentando
> > capturar podem chegar a 8.
> >
> > Tentei algumas coisas básicas. O mais próximo que cheguei foi:
> >
> > [A-Z]{2}[0-9]{2}
>
> 
> se o conjunto de números pode ir até 6 faça:
>
> [A-Z]{2}[0-9]{2,6}
>
> >
> > Que pega um par de letras somente se for seguido de um par de
> números. Para
> > uma string tipo GG48LH23JV vai funcionar em dois matches, tem algum
> problema
> > nisso?
> >
> > Pegar um par de letras+um par de números e assim por diante, não resolve
> > toda a situação, pois em 90% dos casos são usados 6 algarismos (ex:
> GG67MH).
> >
> > Alguém pode me dar uma dica?
> >
> > Valeu.
> > Benito
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



Re: [shell-script] Re: expressão regular

2007-12-05 Por tôpico Tiago Barcellos Peczenyj
EStá on-topic.

Alias o fast-grep (vulgo fgrep) também sofre do 'mesmo' mal.

On 12/5/07, André Saunite <[EMAIL PROTECTED]> wrote:
>
> Apenas para conhecimento histórico,
>
> Nos unix mais antigos o egrep é uma implementação diferente do grep,
> com suporte a ER completas, como a versão GNU já foi desenvolvida com
> todo esse suporte através da expressão "-E" o seu egrep é apenas um
> shell script que chama o "grep -E" (até onde eu sei é apenas para
> backward compatibility),
>
> Acho interessante divulgar esse tipo de coisa para evitar que usuários
> que tem mais contato com UNIX através do Linux não desperdicem tempo
> procurando por soluções de problemas desse tipo quando necessitarem
> utilizar outras variações de UNIX,
>
> Por favor se eu estiver sendo "off-topic" me avisem! :o)
>
> Abs,
> André
>
> On Dec 5, 2007 5:04 PM, Flavio Junior <[EMAIL PROTECTED]>
> wrote:
> >
> >
> >
> >
> >
> >
> > Na real grep ou egrep (que nada mais é que o grep -E) ta sendo usado
> > de forma errada.
> > O grep retorna a LINHA toda que casar com a expressão, pra evitar isso
> > precisa usar a opção "-o" do grep/grep -E.
> >
> > Ou seja, faça:
> >
> > $ grep -Eo 'expressão' arquivo
> >
> > Quanto ao site, não sei :)..
> >
> > --
> >
> > Flávio do Carmo Júnior
> >
> >
> >
> > On Dec 5, 2007 4:59 PM, André Saunite <[EMAIL 
> > PROTECTED]>
> wrote:
> > >
> > >
> > >
> > >
> > >
> > >
> > > Fala Benito!
> > >
> > > O problema é que você tá usando o grep em vez do egrep! O grep não é
> > > muito bom com expressões regulares mais complexas, para essas é
> > > preciso utilzar o egrep.
> > >
> > > [ 16:56:30:eandsau@ ~ $ ] echo GG48LH33|grep
> > "([A-Z]{2}[0-9]{2})+[A-Z]{2}?"
> > > [ 16:56:37:eandsau@ ~ $ ] echo GG48LH33|egrep
> > > "([A-Z]{2}[0-9]{2})+[A-Z]{2}?"
> > > GG48LH33
> > >
> > > Abração!
> > > André Saunite
> > >
> > > On Dec 5, 2007 4:56 PM, Josenivaldo Benito Junior
> > >
> > >
> > > <[EMAIL PROTECTED] > wrote:
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > Só acrescentando,
> > > >
> > > > o site http://regexpal.com/
> > > >
> > > > Também interpreta ao ER do Thiago diferente. Ele da match em strings
> de
> > 6
> > > > digitos mas não da match em 4 digitos nem em 8 como o sed. Alguma
> > > > explicação
> > > > para isso?
> > > >
> > > > Exemplo usado no site:
> > > >
> > > > JJ34 => não pega
> > > > GG47LH => pega
> > > > FG37LL33 => não pega
> > > > FG37LL33JK ==> pega
> > > >
> > > > Todas são válidas. No sed fica assim:
> > > >
> > > >
> > > > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > > > > cat ttt | sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
> > > > |JJ34|
> > > > |GG47LH|
> > > > |FG37LL33|
> > > > |FG37LL33JK|
> > > >
> > > > Ou seja, pega todas!
> > > >
> > > > Muito obrigado,
> > > > Benito.
> > > >
> > > >
> > > > On 12/5/07, Josenivaldo Benito Junior <[EMAIL 
> > > > PROTECTED]>
> wrote:
> > > > >
> > > >
> > > > > Oi,
> > > > >
> > > > > eu acho que expressei-me mau.
> > > > >
> > > > > não existe a forma
> > > > >
> > > > > GG482733 (que sua expressão pegaria)
> > > > >
> > > > > O formato correto é: duas letras+dois números+duas letras+dois
> > > > > números+duas letras
> > > > >
> > > > > O comprimento total é no máximo 12, mas o mais comum é 4 ou 6 como
> > por
> > > > > exemplo:
> > > > >
> > > > > GG48LH
> > > > > GG67
> > > > > GG48
> > > > > JH32HG
> > > > > ...
> > > > >
> > > > > É mais ou menos assim:
> > > > >
> > > > > GG -> indica uma grade grande (de latitude e longitude) (quadrada)
> > > > > GG48 -> se você dividir o quadro GG em pedacinhos (o tamanho não
> vem
> > ao
> > > > > caso), GG48 representa um dos pedacinhos de GG (um quadro)
> > > > > GG48LH -> novamente, divide o quadro GG48 em vários pedaços e
> GG48LH
> > é
> > > um
> > > > > desses pedaços, GG48JG é outro e assim vai.
> > > > >
> > > > > Exemplo prático:
> > > > >
> > > > > O localizador da minha residência é GG67MH (com 6 digitos).
> > Dependendo
> > > da
> > > > > aplicação eu posso informar:
> > > > >
> > > > > GG67 (menos preciso)
> > > > > GG67MH (mais preciso)
> > > > >
> > > > > Então, o comum na aplicação é aparecerem localizadores, um por
> linha,
> > > > > assim:
> > > > >
> > > > > GG67
> > > > > GG35AF
> > > > > GG67MH
> > > > > GG48LH
> > > > > GG67LH
> > > > > DF45OP
> > > > > DF54
> > > > >
> > > > > Eventualmente podem aparecer:
> > > > >
> > > > > GG67AF33
> > > > > JH34RD25ES
> > > > >
> > > > > Mas não estou me preocupando com estes casos, posso cortá-los em 6
> > > > digitos
> > > > > sem perda de informação relevante à minha aplicação. Cortando
> esses
> > > dois
> > > > > exemplo fica:
> > > > >
> > > > > GG67AF
> > > > > JH34RD
> > > > >
> > > > > Mas, não posso aumentar um grid de 4 digitos para para 6
> > > arbitrariamente,
> > > > > por exemplo:
> > > > >
> > > > > usuário entra com GG48
> > > > > eu não posso assumir GG48LH ou GG48JH ou GG48EJ ... tenho que
> > > considerar
> > > > > apenas GG48
> > > > >
> > > > > O que eu tentei fazer inicialmente era consistir qualquer
> sequenc

Re: [shell-script] Re: expressão regular

2007-12-05 Por tôpico Tiago Barcellos Peczenyj
Por alguma razão o sed consegue entender que o ultimo ? se refere a
expressão [A-Z]{2}, mas esse site entende como se fosse apenas {2}? -- alias
isso não faz sentido, um quantificador ser opcional... seria uma ER de uma
ER...

Vc pode forçar que o ? seja aplicado ao que vc quer:
([A-Z]{2}[0-9]{2})+([A-Z]{2})?

Ai funciona tanto no site (que faz uso de javascript, provavelmente) quanto
em quaisquer outras ferramentas com o mesmo comportamento curioso acerca do
? ;-)

On 12/5/07, Josenivaldo Benito Junior <[EMAIL PROTECTED]> wrote:
>
> Só acrescentando,
>
> o site http://regexpal.com/
>
> Também interpreta ao ER do Thiago diferente. Ele da match em strings de 6
> digitos mas não da match em 4 digitos nem em 8 como o sed. Alguma
> explicação
> para isso?
>
> Exemplo usado no site:
>
> JJ34 => não pega
> GG47LH => pega
> FG37LL33 => não pega
> FG37LL33JK ==> pega
>
> Todas são válidas. No sed fica assim:
>
> [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > cat ttt | sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
> |JJ34|
> |GG47LH|
> |FG37LL33|
> |FG37LL33JK|
>
> Ou seja, pega todas!
>
> Muito obrigado,
> Benito.
>
> On 12/5/07, Josenivaldo Benito Junior <[EMAIL 
> PROTECTED]>
> wrote:
> >
> > Oi,
> >
> > eu acho que expressei-me mau.
> >
> > não existe a forma
> >
> > GG482733 (que sua expressão pegaria)
> >
> > O formato correto é: duas letras+dois números+duas letras+dois
> > números+duas letras
> >
> > O comprimento total é no máximo 12, mas o mais comum é 4 ou 6 como por
> > exemplo:
> >
> > GG48LH
> > GG67
> > GG48
> > JH32HG
> > ...
> >
> > É mais ou menos assim:
> >
> > GG -> indica uma grade grande (de latitude e longitude) (quadrada)
> > GG48 -> se você dividir o quadro GG em pedacinhos (o tamanho não vem ao
> > caso), GG48 representa um dos pedacinhos de GG (um quadro)
> > GG48LH -> novamente, divide o quadro GG48 em vários pedaços e GG48LH é
> um
> > desses pedaços, GG48JG é outro e assim vai.
> >
> > Exemplo prático:
> >
> > O localizador da minha residência é GG67MH (com 6 digitos). Dependendo
> da
> > aplicação eu posso informar:
> >
> > GG67 (menos preciso)
> > GG67MH (mais preciso)
> >
> > Então, o comum na aplicação é aparecerem localizadores, um por linha,
> > assim:
> >
> > GG67
> > GG35AF
> > GG67MH
> > GG48LH
> > GG67LH
> > DF45OP
> > DF54
> >
> > Eventualmente podem aparecer:
> >
> > GG67AF33
> > JH34RD25ES
> >
> > Mas não estou me preocupando com estes casos, posso cortá-los em 6
> digitos
> > sem perda de informação relevante à minha aplicação. Cortando esses dois
> > exemplo fica:
> >
> > GG67AF
> > JH34RD
> >
> > Mas, não posso aumentar um grid de 4 digitos para para 6
> arbitrariamente,
> > por exemplo:
> >
> > usuário entra com GG48
> > eu não posso assumir GG48LH ou GG48JH ou GG48EJ ... tenho que considerar
> > apenas GG48
> >
> > O que eu tentei fazer inicialmente era consistir qualquer sequencia
> > agrupada de duas letras+dois numeros+duas letras+dois numeros e assim
> por
> > diante. Só para ter certeza que não entrem coisas inválidas como?
> >
> > GGLH
> > ou
> > 2235
> > ou
> > 22LH
> > (tem que começar por letra obrigatoriamente e sempre apos duas letras
> vem
> > um numero, depois pode vir duas letras e assim vai)
> >
> > De fato, o que preciso é que, independente do comprimento (que eu sempre
> > vou garantir ser maior que 4), a string comece por duas letras seguidas
> por
> > dois numeros, eventualmente seguidos por mais duas letras que,
> > eventualmente, podem estar seguidas de dois números e assim por diante.
> >
> > A expressão do Thiago acertou na lata. Mas, existe algum motivo especial
> > para não funcionar no grep? Tipo:
> >
> > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > > echo GG48LH|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
> > |GG48LH|
> >
> > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > > echo GG48|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
> > |GG48|
> >
> > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > > echo GG48LH33|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
> > |GG48LH33|
> >
> > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > > echo GG48LH33|grep '([A-Z]{2}[0-9]{2})+[A-Z]{2}?'
> >
> > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > > echo GG48LH33|grep "([A-Z]{2}[0-9]{2})+[A-Z]{2}?"
> >
> >
> > O grep não imprime o match. Comi bronha?
> >
> >
> > Obrigado pelas dicas de todos
> > Abraço
> > Benito
> >
> > >
> >
> >
> > On 12/5/07, voyeg3r < [EMAIL PROTECTED] >
> wrote:
> > >
> > > --- Em shell-script@yahoogrupos.com.br
> ,
> > > "Josenivaldo Benito Junior"
> > > <[EMAIL PROTECTED]> escreveu
> > > >
> > > > Olá turma,
> > > >
> > > > Estou apanhando de uma expressão regular. Para ser sincero já não
> > > sei dizer
> > > > se ela é possível (deve ser o sono).
> > > >
> > > > Preciso pegar strings do tipo:
> > > >
> > > > GG48LH
> > > > JH23
> > > > JH45ER
> > > > FJ87SA76
> > > >
> > > > Resumindo:
> > > >
> > > > Sempre tem duas letras (de A até Z) seguidas de dois números (de 0
> > > até 9),
> > > > podendo estar seguidos mais duas letras,

Re: [shell-script] Re: expressão regular

2007-12-05 Por tôpico Flavio Junior
Na real grep ou egrep (que nada mais é que o grep -E) ta sendo usado
de forma errada.
O grep retorna a LINHA toda que casar com a expressão, pra evitar isso
precisa usar a opção "-o" do grep/grep -E.


Ou seja, faça:

$ grep -Eo 'expressão' arquivo


Quanto ao site, não sei :)..

--

Flávio do Carmo Júnior

On Dec 5, 2007 4:59 PM, André Saunite <[EMAIL PROTECTED]> wrote:
>
>
>
>
>
>
> Fala Benito!
>
>  O problema é que você tá usando o grep em vez do egrep! O grep não é
>  muito bom com expressões regulares mais complexas, para essas é
>  preciso utilzar o egrep.
>
>  [ 16:56:30:eandsau@ ~ $ ] echo GG48LH33|grep "([A-Z]{2}[0-9]{2})+[A-Z]{2}?"
>  [ 16:56:37:eandsau@ ~ $ ] echo GG48LH33|egrep
> "([A-Z]{2}[0-9]{2})+[A-Z]{2}?"
>  GG48LH33
>
>  Abração!
>  André Saunite
>
>  On Dec 5, 2007 4:56 PM, Josenivaldo Benito Junior
>
>
>  <[EMAIL PROTECTED]> wrote:
>  >
>  >
>  >
>  >
>  >
>  >
>  > Só acrescentando,
>  >
>  > o site http://regexpal.com/
>  >
>  > Também interpreta ao ER do Thiago diferente. Ele da match em strings de 6
>  > digitos mas não da match em 4 digitos nem em 8 como o sed. Alguma
>  > explicação
>  > para isso?
>  >
>  > Exemplo usado no site:
>  >
>  > JJ34 => não pega
>  > GG47LH => pega
>  > FG37LL33 => não pega
>  > FG37LL33JK ==> pega
>  >
>  > Todas são válidas. No sed fica assim:
>  >
>  >
>  > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
>  > > cat ttt | sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
>  > |JJ34|
>  > |GG47LH|
>  > |FG37LL33|
>  > |FG37LL33JK|
>  >
>  > Ou seja, pega todas!
>  >
>  > Muito obrigado,
>  > Benito.
>  >
>  >
>  > On 12/5/07, Josenivaldo Benito Junior <[EMAIL PROTECTED]> wrote:
>  > >
>  >
>  > > Oi,
>  > >
>  > > eu acho que expressei-me mau.
>  > >
>  > > não existe a forma
>  > >
>  > > GG482733 (que sua expressão pegaria)
>  > >
>  > > O formato correto é: duas letras+dois números+duas letras+dois
>  > > números+duas letras
>  > >
>  > > O comprimento total é no máximo 12, mas o mais comum é 4 ou 6 como por
>  > > exemplo:
>  > >
>  > > GG48LH
>  > > GG67
>  > > GG48
>  > > JH32HG
>  > > ...
>  > >
>  > > É mais ou menos assim:
>  > >
>  > > GG -> indica uma grade grande (de latitude e longitude) (quadrada)
>  > > GG48 -> se você dividir o quadro GG em pedacinhos (o tamanho não vem ao
>  > > caso), GG48 representa um dos pedacinhos de GG (um quadro)
>  > > GG48LH -> novamente, divide o quadro GG48 em vários pedaços e GG48LH é
> um
>  > > desses pedaços, GG48JG é outro e assim vai.
>  > >
>  > > Exemplo prático:
>  > >
>  > > O localizador da minha residência é GG67MH (com 6 digitos). Dependendo
> da
>  > > aplicação eu posso informar:
>  > >
>  > > GG67 (menos preciso)
>  > > GG67MH (mais preciso)
>  > >
>  > > Então, o comum na aplicação é aparecerem localizadores, um por linha,
>  > > assim:
>  > >
>  > > GG67
>  > > GG35AF
>  > > GG67MH
>  > > GG48LH
>  > > GG67LH
>  > > DF45OP
>  > > DF54
>  > >
>  > > Eventualmente podem aparecer:
>  > >
>  > > GG67AF33
>  > > JH34RD25ES
>  > >
>  > > Mas não estou me preocupando com estes casos, posso cortá-los em 6
>  > digitos
>  > > sem perda de informação relevante à minha aplicação. Cortando esses
> dois
>  > > exemplo fica:
>  > >
>  > > GG67AF
>  > > JH34RD
>  > >
>  > > Mas, não posso aumentar um grid de 4 digitos para para 6
> arbitrariamente,
>  > > por exemplo:
>  > >
>  > > usuário entra com GG48
>  > > eu não posso assumir GG48LH ou GG48JH ou GG48EJ ... tenho que
> considerar
>  > > apenas GG48
>  > >
>  > > O que eu tentei fazer inicialmente era consistir qualquer sequencia
>  > > agrupada de duas letras+dois numeros+duas letras+dois numeros e assim
> por
>  > > diante. Só para ter certeza que não entrem coisas inválidas como?
>  > >
>  > > GGLH
>  > > ou
>  > > 2235
>  > > ou
>  > > 22LH
>  > > (tem que começar por letra obrigatoriamente e sempre apos duas letras
> vem
>  > > um numero, depois pode vir duas letras e assim vai)
>  > >
>  > > De fato, o que preciso é que, independente do comprimento (que eu
> sempre
>  > > vou garantir ser maior que 4), a string comece por duas letras seguidas
>  > por
>  > > dois numeros, eventualmente seguidos por mais duas letras que,
>  > > eventualmente, podem estar seguidas de dois números e assim por diante.
>  > >
>  > > A expressão do Thiago acertou na lata. Mas, existe algum motivo
> especial
>  > > para não funcionar no grep? Tipo:
>  > >
>  > > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
>  > > > echo GG48LH|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
>  > > |GG48LH|
>  > >
>  > > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
>  > > > echo GG48|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
>  > > |GG48|
>  > >
>  > > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
>  > > > echo GG48LH33|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
>  > > |GG48LH33|
>  > >
>  > > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
>  > > > echo GG48LH33|grep '([A-Z]{2}[0-9]{2})+[A-Z]{2}?'
>  > >
>  > > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
>  > > > echo GG48LH33|grep "([A-Z]{2}[0-9]{

Re: [shell-script] Re: expressão regular

2007-12-05 Por tôpico Julio C. Neves
Fala André,
vc está não está off-topic e ainda vou acrescentar umas dicas ao que vc
falou:

O Unix tem uma família composta por 3 caras: fgrep que não sabe nada de
regexp, grep que só conhece regexps básicas e egrep que sabe tudo de regexp.
Escrevi na ordem de performance onde cada um é cerca de 20% mais veloz que o
seguinte.

Qdo o Linux usa o egrep e o fgrep como scripts para chamar o grep -E e o
grep -f respectivamente, temos o pior mundo possível, ou seja, sempre
executaremos um o código mais pesado.

Abraços,
Julio

Em 05/12/07, André Saunite <[EMAIL PROTECTED]> escreveu:
>
>   Apenas para conhecimento histórico,
>
> Nos unix mais antigos o egrep é uma implementação diferente do grep,
> com suporte a ER completas, como a versão GNU já foi desenvolvida com
> todo esse suporte através da expressão "-E" o seu egrep é apenas um
> shell script que chama o "grep -E" (até onde eu sei é apenas para
> backward compatibility),
>
> Acho interessante divulgar esse tipo de coisa para evitar que usuários
> que tem mais contato com UNIX através do Linux não desperdicem tempo
> procurando por soluções de problemas desse tipo quando necessitarem
> utilizar outras variações de UNIX,
>
> Por favor se eu estiver sendo "off-topic" me avisem! :o)
>
> Abs,
> André
>
>
> On Dec 5, 2007 5:04 PM, Flavio Junior <[EMAIL PROTECTED]>
> wrote:
> >
> >
> >
> >
> >
> >
> > Na real grep ou egrep (que nada mais é que o grep -E) ta sendo usado
> > de forma errada.
> > O grep retorna a LINHA toda que casar com a expressão, pra evitar isso
> > precisa usar a opção "-o" do grep/grep -E.
> >
> > Ou seja, faça:
> >
> > $ grep -Eo 'expressão' arquivo
> >
> > Quanto ao site, não sei :)..
> >
> > --
> >
> > Flávio do Carmo Júnior
> >
> >
> >
> > On Dec 5, 2007 4:59 PM, André Saunite <[EMAIL 
> > PROTECTED]>
> wrote:
> > >
> > >
> > >
> > >
> > >
> > >
> > > Fala Benito!
> > >
> > > O problema é que você tá usando o grep em vez do egrep! O grep não é
> > > muito bom com expressões regulares mais complexas, para essas é
> > > preciso utilzar o egrep.
> > >
> > > [ 16:56:30:eandsau@ ~ $ ] echo GG48LH33|grep
> > "([A-Z]{2}[0-9]{2})+[A-Z]{2}?"
> > > [ 16:56:37:eandsau@ ~ $ ] echo GG48LH33|egrep
> > > "([A-Z]{2}[0-9]{2})+[A-Z]{2}?"
> > > GG48LH33
> > >
> > > Abração!
> > > André Saunite
> > >
> > > On Dec 5, 2007 4:56 PM, Josenivaldo Benito Junior
> > >
> > >
> > > <[EMAIL PROTECTED] > wrote:
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > Só acrescentando,
> > > >
> > > > o site http://regexpal.com/
> > > >
> > > > Também interpreta ao ER do Thiago diferente. Ele da match em strings
> de
> > 6
> > > > digitos mas não da match em 4 digitos nem em 8 como o sed. Alguma
> > > > explicação
> > > > para isso?
> > > >
> > > > Exemplo usado no site:
> > > >
> > > > JJ34 => não pega
> > > > GG47LH => pega
> > > > FG37LL33 => não pega
> > > > FG37LL33JK ==> pega
> > > >
> > > > Todas são válidas. No sed fica assim:
> > > >
> > > >
> > > > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > > > > cat ttt | sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
> > > > |JJ34|
> > > > |GG47LH|
> > > > |FG37LL33|
> > > > |FG37LL33JK|
> > > >
> > > > Ou seja, pega todas!
> > > >
> > > > Muito obrigado,
> > > > Benito.
> > > >
> > > >
> > > > On 12/5/07, Josenivaldo Benito Junior <[EMAIL 
> > > > PROTECTED]>
> wrote:
> > > > >
> > > >
> > > > > Oi,
> > > > >
> > > > > eu acho que expressei-me mau.
> > > > >
> > > > > não existe a forma
> > > > >
> > > > > GG482733 (que sua expressão pegaria)
> > > > >
> > > > > O formato correto é: duas letras+dois números+duas letras+dois
> > > > > números+duas letras
> > > > >
> > > > > O comprimento total é no máximo 12, mas o mais comum é 4 ou 6 como
> > por
> > > > > exemplo:
> > > > >
> > > > > GG48LH
> > > > > GG67
> > > > > GG48
> > > > > JH32HG
> > > > > ...
> > > > >
> > > > > É mais ou menos assim:
> > > > >
> > > > > GG -> indica uma grade grande (de latitude e longitude) (quadrada)
> > > > > GG48 -> se você dividir o quadro GG em pedacinhos (o tamanho não
> vem
> > ao
> > > > > caso), GG48 representa um dos pedacinhos de GG (um quadro)
> > > > > GG48LH -> novamente, divide o quadro GG48 em vários pedaços e
> GG48LH
> > é
> > > um
> > > > > desses pedaços, GG48JG é outro e assim vai.
> > > > >
> > > > > Exemplo prático:
> > > > >
> > > > > O localizador da minha residência é GG67MH (com 6 digitos).
> > Dependendo
> > > da
> > > > > aplicação eu posso informar:
> > > > >
> > > > > GG67 (menos preciso)
> > > > > GG67MH (mais preciso)
> > > > >
> > > > > Então, o comum na aplicação é aparecerem localizadores, um por
> linha,
> > > > > assim:
> > > > >
> > > > > GG67
> > > > > GG35AF
> > > > > GG67MH
> > > > > GG48LH
> > > > > GG67LH
> > > > > DF45OP
> > > > > DF54
> > > > >
> > > > > Eventualmente podem aparecer:
> > > > >
> > > > > GG67AF33
> > > > > JH34RD25ES
> > > > >
> > > > > Mas não estou me preocupando com estes casos, posso cortá-los em 6
> > > > digitos
> > > > > sem perda de informação relevante à minha aplicação. Cor

Re: [shell-script] Re: expressão regular

2007-12-05 Por tôpico André Saunite
Apenas para conhecimento histórico,

Nos unix mais antigos o egrep é uma implementação diferente do grep,
com suporte a ER completas, como a versão GNU já foi desenvolvida com
todo esse suporte através da expressão "-E" o seu egrep é apenas um
shell script que chama o "grep -E" (até onde eu sei é apenas para
backward compatibility),

Acho interessante divulgar esse tipo de coisa para evitar que usuários
que tem mais contato com UNIX através do Linux não desperdicem tempo
procurando por soluções de problemas desse tipo quando necessitarem
utilizar outras variações de UNIX,

Por favor se eu estiver sendo "off-topic" me avisem! :o)

Abs,
André

On Dec 5, 2007 5:04 PM, Flavio Junior <[EMAIL PROTECTED]> wrote:
>
>
>
>
>
>
> Na real grep ou egrep (que nada mais é que o grep -E) ta sendo usado
>  de forma errada.
>  O grep retorna a LINHA toda que casar com a expressão, pra evitar isso
>  precisa usar a opção "-o" do grep/grep -E.
>
>  Ou seja, faça:
>
>  $ grep -Eo 'expressão' arquivo
>
>  Quanto ao site, não sei :)..
>
>  --
>
>  Flávio do Carmo Júnior
>
>
>
>  On Dec 5, 2007 4:59 PM, André Saunite <[EMAIL PROTECTED]> wrote:
>  >
>  >
>  >
>  >
>  >
>  >
>  > Fala Benito!
>  >
>  > O problema é que você tá usando o grep em vez do egrep! O grep não é
>  > muito bom com expressões regulares mais complexas, para essas é
>  > preciso utilzar o egrep.
>  >
>  > [ 16:56:30:eandsau@ ~ $ ] echo GG48LH33|grep
> "([A-Z]{2}[0-9]{2})+[A-Z]{2}?"
>  > [ 16:56:37:eandsau@ ~ $ ] echo GG48LH33|egrep
>  > "([A-Z]{2}[0-9]{2})+[A-Z]{2}?"
>  > GG48LH33
>  >
>  > Abração!
>  > André Saunite
>  >
>  > On Dec 5, 2007 4:56 PM, Josenivaldo Benito Junior
>  >
>  >
>  > <[EMAIL PROTECTED]> wrote:
>  > >
>  > >
>  > >
>  > >
>  > >
>  > >
>  > > Só acrescentando,
>  > >
>  > > o site http://regexpal.com/
>  > >
>  > > Também interpreta ao ER do Thiago diferente. Ele da match em strings de
> 6
>  > > digitos mas não da match em 4 digitos nem em 8 como o sed. Alguma
>  > > explicação
>  > > para isso?
>  > >
>  > > Exemplo usado no site:
>  > >
>  > > JJ34 => não pega
>  > > GG47LH => pega
>  > > FG37LL33 => não pega
>  > > FG37LL33JK ==> pega
>  > >
>  > > Todas são válidas. No sed fica assim:
>  > >
>  > >
>  > > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
>  > > > cat ttt | sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
>  > > |JJ34|
>  > > |GG47LH|
>  > > |FG37LL33|
>  > > |FG37LL33JK|
>  > >
>  > > Ou seja, pega todas!
>  > >
>  > > Muito obrigado,
>  > > Benito.
>  > >
>  > >
>  > > On 12/5/07, Josenivaldo Benito Junior <[EMAIL PROTECTED]> wrote:
>  > > >
>  > >
>  > > > Oi,
>  > > >
>  > > > eu acho que expressei-me mau.
>  > > >
>  > > > não existe a forma
>  > > >
>  > > > GG482733 (que sua expressão pegaria)
>  > > >
>  > > > O formato correto é: duas letras+dois números+duas letras+dois
>  > > > números+duas letras
>  > > >
>  > > > O comprimento total é no máximo 12, mas o mais comum é 4 ou 6 como
> por
>  > > > exemplo:
>  > > >
>  > > > GG48LH
>  > > > GG67
>  > > > GG48
>  > > > JH32HG
>  > > > ...
>  > > >
>  > > > É mais ou menos assim:
>  > > >
>  > > > GG -> indica uma grade grande (de latitude e longitude) (quadrada)
>  > > > GG48 -> se você dividir o quadro GG em pedacinhos (o tamanho não vem
> ao
>  > > > caso), GG48 representa um dos pedacinhos de GG (um quadro)
>  > > > GG48LH -> novamente, divide o quadro GG48 em vários pedaços e GG48LH
> é
>  > um
>  > > > desses pedaços, GG48JG é outro e assim vai.
>  > > >
>  > > > Exemplo prático:
>  > > >
>  > > > O localizador da minha residência é GG67MH (com 6 digitos).
> Dependendo
>  > da
>  > > > aplicação eu posso informar:
>  > > >
>  > > > GG67 (menos preciso)
>  > > > GG67MH (mais preciso)
>  > > >
>  > > > Então, o comum na aplicação é aparecerem localizadores, um por linha,
>  > > > assim:
>  > > >
>  > > > GG67
>  > > > GG35AF
>  > > > GG67MH
>  > > > GG48LH
>  > > > GG67LH
>  > > > DF45OP
>  > > > DF54
>  > > >
>  > > > Eventualmente podem aparecer:
>  > > >
>  > > > GG67AF33
>  > > > JH34RD25ES
>  > > >
>  > > > Mas não estou me preocupando com estes casos, posso cortá-los em 6
>  > > digitos
>  > > > sem perda de informação relevante à minha aplicação. Cortando esses
>  > dois
>  > > > exemplo fica:
>  > > >
>  > > > GG67AF
>  > > > JH34RD
>  > > >
>  > > > Mas, não posso aumentar um grid de 4 digitos para para 6
>  > arbitrariamente,
>  > > > por exemplo:
>  > > >
>  > > > usuário entra com GG48
>  > > > eu não posso assumir GG48LH ou GG48JH ou GG48EJ ... tenho que
>  > considerar
>  > > > apenas GG48
>  > > >
>  > > > O que eu tentei fazer inicialmente era consistir qualquer sequencia
>  > > > agrupada de duas letras+dois numeros+duas letras+dois numeros e assim
>  > por
>  > > > diante. Só para ter certeza que não entrem coisas inválidas como?
>  > > >
>  > > > GGLH
>  > > > ou
>  > > > 2235
>  > > > ou
>  > > > 22LH
>  > > > (tem que começar por letra obrigatoriamente e sempre apos duas letras
>  > vem
>  > > > um numero, depois pode vir duas letras e assim vai

Re: [shell-script] Re: expressão regular

2007-12-05 Por tôpico Bruno Gunter Fricke
Aqui funcionou:

[EMAIL PROTECTED] ~]$ echo GG48LH33 | egrep "([A-Z]{2}[A-Za-z0-9]*)"
GG48LH33

Acho mais legal desta forma porque pode acontecer ter letras minúsculas
ou talvez algum caracter a mais do que o esperado.

[]'s
Gunter



Em Qua, 2007-12-05 às 17:29 -0200, Bruno Gunter Fricke escreveu:
> Benito, teste: /^[A-Za-z]{2}+[A-Za-z0-9]*/
> 
> Em Qua, 2007-12-05 às 17:18 -0200, Tiago Barcellos Peczenyj escreveu:
> > Por alguma razão o sed consegue entender que o ultimo ? se refere a
> > expressão [A-Z]{2}, mas esse site entende como se fosse apenas {2}?
> --
> > alias
> > isso não faz sentido, um quantificador ser opcional... seria uma ER
> de
> > uma
> > ER...
> > 
> > Vc pode forçar que o ? seja aplicado ao que vc quer:
> > ([A-Z]{2}[0-9]{2})+([A-Z]{2})?
> > 
> > Ai funciona tanto no site (que faz uso de javascript, provavelmente)
> > quanto
> > em quaisquer outras ferramentas com o mesmo comportamento curioso
> > acerca do
> > ? ;-)
> > 
> > On 12/5/07, Josenivaldo Benito Junior <[EMAIL PROTECTED]>
> wrote:
> > >
> > > Só acrescentando,
> > >
> > > o site http://regexpal.com/
> > >
> > > Também interpreta ao ER do Thiago diferente. Ele da match em
> strings
> > de 6
> > > digitos mas não da match em 4 digitos nem em 8 como o sed. Alguma
> > > explicação
> > > para isso?
> > >
> > > Exemplo usado no site:
> > >
> > > JJ34 => não pega
> > > GG47LH => pega
> > > FG37LL33 => não pega
> > > FG37LL33JK ==> pega
> > >
> > > Todas são válidas. No sed fica assim:
> > >
> > > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > > > cat ttt | sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
> > > |JJ34|
> > > |GG47LH|
> > > |FG37LL33|
> > > |FG37LL33JK|
> > >
> > > Ou seja, pega todas!
> > >
> > > Muito obrigado,
> > > Benito.
> > >
> > > On 12/5/07, Josenivaldo Benito Junior
> > <[EMAIL PROTECTED]>
> > > wrote:
> > > >
> > > > Oi,
> > > >
> > > > eu acho que expressei-me mau.
> > > >
> > > > não existe a forma
> > > >
> > > > GG482733 (que sua expressão pegaria)
> > > >
> > > > O formato correto é: duas letras+dois números+duas letras+dois
> > > > números+duas letras
> > > >
> > > > O comprimento total é no máximo 12, mas o mais comum é 4 ou 6
> como
> > por
> > > > exemplo:
> > > >
> > > > GG48LH
> > > > GG67
> > > > GG48
> > > > JH32HG
> > > > ...
> > > >
> > > > É mais ou menos assim:
> > > >
> > > > GG -> indica uma grade grande (de latitude e longitude)
> (quadrada)
> > > > GG48 -> se você dividir o quadro GG em pedacinhos (o tamanho não
> > vem ao
> > > > caso), GG48 representa um dos pedacinhos de GG (um quadro)
> > > > GG48LH -> novamente, divide o quadro GG48 em vários pedaços e
> > GG48LH é
> > > um
> > > > desses pedaços, GG48JG é outro e assim vai.
> > > >
> > > > Exemplo prático:
> > > >
> > > > O localizador da minha residência é GG67MH (com 6 digitos).
> > Dependendo
> > > da
> > > > aplicação eu posso informar:
> > > >
> > > > GG67 (menos preciso)
> > > > GG67MH (mais preciso)
> > > >
> > > > Então, o comum na aplicação é aparecerem localizadores, um por
> > linha,
> > > > assim:
> > > >
> > > > GG67
> > > > GG35AF
> > > > GG67MH
> > > > GG48LH
> > > > GG67LH
> > > > DF45OP
> > > > DF54
> > > >
> > > > Eventualmente podem aparecer:
> > > >
> > > > GG67AF33
> > > > JH34RD25ES
> > > >
> > > > Mas não estou me preocupando com estes casos, posso cortá-los em
> 6
> > > digitos
> > > > sem perda de informação relevante à minha aplicação. Cortando
> > esses dois
> > > > exemplo fica:
> > > >
> > > > GG67AF
> > > > JH34RD
> > > >
> > > > Mas, não posso aumentar um grid de 4 digitos para para 6
> > > arbitrariamente,
> > > > por exemplo:
> > > >
> > > > usuário entra com GG48
> > > > eu não posso assumir GG48LH ou GG48JH ou GG48EJ ... tenho que
> > considerar
> > > > apenas GG48
> > > >
> > > > O que eu tentei fazer inicialmente era consistir qualquer
> > sequencia
> > > > agrupada de duas letras+dois numeros+duas letras+dois numeros e
> > assim
> > > por
> > > > diante. Só para ter certeza que não entrem coisas inválidas
> como?
> > > >
> > > > GGLH
> > > > ou
> > > > 2235
> > > > ou
> > > > 22LH
> > > > (tem que começar por letra obrigatoriamente e sempre apos duas
> > letras
> > > vem
> > > > um numero, depois pode vir duas letras e assim vai)
> > > >
> > > > De fato, o que preciso é que, independente do comprimento (que
> eu
> > sempre
> > > > vou garantir ser maior que 4), a string comece por duas letras
> > seguidas
> > > por
> > > > dois numeros, eventualmente seguidos por mais duas letras que,
> > > > eventualmente, podem estar seguidas de dois números e assim por
> > diante.
> > > >
> > > > A expressão do Thiago acertou na lata. Mas, existe algum motivo
> > especial
> > > > para não funcionar no grep? Tipo:
> > > >
> > > > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > > > > echo GG48LH|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
> > > > |GG48LH|
> > > >
> > > > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > > > > echo GG48|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
> > > > |GG48|
> > > >
> > > > 

Re: [shell-script] Re: expressão regular

2007-12-05 Por tôpico Josenivaldo Benito Junior
Só acrescentando,

o site http://regexpal.com/

Também interpreta ao ER do Thiago diferente. Ele da match em strings de 6
digitos mas não da match em 4 digitos nem em 8 como o sed. Alguma explicação
para isso?

Exemplo usado no site:

JJ34=> não pega
GG47LH  => pega
FG37LL33 => não pega
FG37LL33JK ==> pega

Todas são válidas. No sed fica assim:

[rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> cat ttt | sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
|JJ34|
|GG47LH|
|FG37LL33|
|FG37LL33JK|

Ou seja, pega todas!

Muito obrigado,
Benito.


On 12/5/07, Josenivaldo Benito Junior <[EMAIL PROTECTED]> wrote:
>
> Oi,
>
> eu acho que expressei-me mau.
>
> não existe a forma
>
> GG482733 (que sua expressão pegaria)
>
> O formato correto é: duas letras+dois números+duas letras+dois
> números+duas letras
>
> O comprimento total é no máximo 12, mas o mais comum é 4 ou 6 como por
> exemplo:
>
> GG48LH
> GG67
> GG48
> JH32HG
> ...
>
> É mais ou menos assim:
>
> GG -> indica uma grade grande (de latitude e longitude) (quadrada)
> GG48 -> se você dividir o quadro GG em pedacinhos (o tamanho não vem ao
> caso), GG48 representa um dos pedacinhos de GG (um quadro)
> GG48LH -> novamente, divide o quadro GG48 em vários pedaços e GG48LH é um
> desses pedaços, GG48JG é outro e assim vai.
>
> Exemplo prático:
>
> O localizador da minha residência é GG67MH (com 6 digitos). Dependendo da
> aplicação eu posso informar:
>
> GG67 (menos preciso)
> GG67MH (mais preciso)
>
> Então, o comum na aplicação é aparecerem localizadores, um por linha,
> assim:
>
> GG67
> GG35AF
> GG67MH
> GG48LH
> GG67LH
> DF45OP
> DF54
>
> Eventualmente podem aparecer:
>
> GG67AF33
> JH34RD25ES
>
> Mas não estou me preocupando com estes casos, posso cortá-los em 6 digitos
> sem perda de informação relevante à minha aplicação. Cortando esses dois
> exemplo fica:
>
> GG67AF
> JH34RD
>
> Mas, não posso aumentar um grid de 4 digitos para para 6 arbitrariamente,
> por exemplo:
>
> usuário entra com GG48
> eu não posso assumir GG48LH ou GG48JH ou GG48EJ ... tenho que considerar
> apenas GG48
>
> O que eu tentei fazer inicialmente era consistir qualquer sequencia
> agrupada de duas letras+dois numeros+duas letras+dois numeros e assim por
> diante. Só para ter certeza que não entrem coisas inválidas como?
>
> GGLH
> ou
> 2235
> ou
> 22LH
> (tem que começar por letra obrigatoriamente e sempre apos duas letras vem
> um numero, depois pode vir duas letras e assim vai)
>
> De fato, o que preciso é que, independente do comprimento (que eu sempre
> vou garantir ser maior que 4), a string comece por duas letras seguidas por
> dois numeros, eventualmente seguidos por mais duas letras que,
> eventualmente, podem estar seguidas de dois números e assim por diante.
>
> A expressão do Thiago acertou na lata. Mas, existe algum motivo especial
> para não funcionar no grep? Tipo:
>
> [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > echo GG48LH|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
> |GG48LH|
>
> [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > echo GG48|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
> |GG48|
>
> [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > echo GG48LH33|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
> |GG48LH33|
>
> [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > echo GG48LH33|grep '([A-Z]{2}[0-9]{2})+[A-Z]{2}?'
>
> [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > echo GG48LH33|grep "([A-Z]{2}[0-9]{2})+[A-Z]{2}?"
>
>
> O grep não imprime o match. Comi bronha?
>
>
> Obrigado pelas dicas de todos
> Abraço
> Benito
>
> >
>
>
> On 12/5/07, voyeg3r < [EMAIL PROTECTED]> wrote:
> >
> >   --- Em shell-script@yahoogrupos.com.br,
> > "Josenivaldo Benito Junior"
> > <[EMAIL PROTECTED]> escreveu
> > >
> > > Olá turma,
> > >
> > > Estou apanhando de uma expressão regular. Para ser sincero já não
> > sei dizer
> > > se ela é possível (deve ser o sono).
> > >
> > > Preciso pegar strings do tipo:
> > >
> > > GG48LH
> > > JH23
> > > JH45ER
> > > FJ87SA76
> > >
> > > Resumindo:
> > >
> > > Sempre tem duas letras (de A até Z) seguidas de dois números (de 0
> > até 9),
> > > podendo estar seguidos mais duas letras, podendo estar seguido de
> > mais dois
> > > números. (duas letras,dois nros., duas letras, dois nros). Mas a
> > informação
> > > pode ter 2,4,6 ou 8 letras (1,2,3 ou 4 conjuntos de letras e números).
> > >
> > > O que são essas coisas? Coordenadas em formato World Locator. De
> > fato podem
> > > ir até 12 algarismos, o comum é 4 ou 6. Na aplicação que estou
> > tentando
> > > capturar podem chegar a 8.
> > >
> > > Tentei algumas coisas básicas. O mais próximo que cheguei foi:
> > >
> > > [A-Z]{2}[0-9]{2}
> >
> > 
> > se o conjunto de números pode ir até 6 faça:
> >
> > [A-Z]{2}[0-9]{2,6}
> >
> > >
> > > Que pega um par de letras somente se for seguido de um par de
> > números. Para
> > > uma string tipo GG48LH23JV vai funcionar em dois matches, tem algum
> > problema
> > > nisso?
> > >
> > > Pegar um par de letras+um par de númer

Re: [shell-script] Re: expressão regular

2007-12-05 Por tôpico Bruno Gunter Fricke
Benito, teste: /^[A-Za-z]{2}+[A-Za-z0-9]*/

Em Qua, 2007-12-05 às 17:18 -0200, Tiago Barcellos Peczenyj escreveu:
> Por alguma razão o sed consegue entender que o ultimo ? se refere a
> expressão [A-Z]{2}, mas esse site entende como se fosse apenas {2}? --
> alias
> isso não faz sentido, um quantificador ser opcional... seria uma ER de
> uma
> ER...
> 
> Vc pode forçar que o ? seja aplicado ao que vc quer:
> ([A-Z]{2}[0-9]{2})+([A-Z]{2})?
> 
> Ai funciona tanto no site (que faz uso de javascript, provavelmente)
> quanto
> em quaisquer outras ferramentas com o mesmo comportamento curioso
> acerca do
> ? ;-)
> 
> On 12/5/07, Josenivaldo Benito Junior <[EMAIL PROTECTED]> wrote:
> >
> > Só acrescentando,
> >
> > o site http://regexpal.com/
> >
> > Também interpreta ao ER do Thiago diferente. Ele da match em strings
> de 6
> > digitos mas não da match em 4 digitos nem em 8 como o sed. Alguma
> > explicação
> > para isso?
> >
> > Exemplo usado no site:
> >
> > JJ34 => não pega
> > GG47LH => pega
> > FG37LL33 => não pega
> > FG37LL33JK ==> pega
> >
> > Todas são válidas. No sed fica assim:
> >
> > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > > cat ttt | sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
> > |JJ34|
> > |GG47LH|
> > |FG37LL33|
> > |FG37LL33JK|
> >
> > Ou seja, pega todas!
> >
> > Muito obrigado,
> > Benito.
> >
> > On 12/5/07, Josenivaldo Benito Junior
> <[EMAIL PROTECTED]>
> > wrote:
> > >
> > > Oi,
> > >
> > > eu acho que expressei-me mau.
> > >
> > > não existe a forma
> > >
> > > GG482733 (que sua expressão pegaria)
> > >
> > > O formato correto é: duas letras+dois números+duas letras+dois
> > > números+duas letras
> > >
> > > O comprimento total é no máximo 12, mas o mais comum é 4 ou 6 como
> por
> > > exemplo:
> > >
> > > GG48LH
> > > GG67
> > > GG48
> > > JH32HG
> > > ...
> > >
> > > É mais ou menos assim:
> > >
> > > GG -> indica uma grade grande (de latitude e longitude) (quadrada)
> > > GG48 -> se você dividir o quadro GG em pedacinhos (o tamanho não
> vem ao
> > > caso), GG48 representa um dos pedacinhos de GG (um quadro)
> > > GG48LH -> novamente, divide o quadro GG48 em vários pedaços e
> GG48LH é
> > um
> > > desses pedaços, GG48JG é outro e assim vai.
> > >
> > > Exemplo prático:
> > >
> > > O localizador da minha residência é GG67MH (com 6 digitos).
> Dependendo
> > da
> > > aplicação eu posso informar:
> > >
> > > GG67 (menos preciso)
> > > GG67MH (mais preciso)
> > >
> > > Então, o comum na aplicação é aparecerem localizadores, um por
> linha,
> > > assim:
> > >
> > > GG67
> > > GG35AF
> > > GG67MH
> > > GG48LH
> > > GG67LH
> > > DF45OP
> > > DF54
> > >
> > > Eventualmente podem aparecer:
> > >
> > > GG67AF33
> > > JH34RD25ES
> > >
> > > Mas não estou me preocupando com estes casos, posso cortá-los em 6
> > digitos
> > > sem perda de informação relevante à minha aplicação. Cortando
> esses dois
> > > exemplo fica:
> > >
> > > GG67AF
> > > JH34RD
> > >
> > > Mas, não posso aumentar um grid de 4 digitos para para 6
> > arbitrariamente,
> > > por exemplo:
> > >
> > > usuário entra com GG48
> > > eu não posso assumir GG48LH ou GG48JH ou GG48EJ ... tenho que
> considerar
> > > apenas GG48
> > >
> > > O que eu tentei fazer inicialmente era consistir qualquer
> sequencia
> > > agrupada de duas letras+dois numeros+duas letras+dois numeros e
> assim
> > por
> > > diante. Só para ter certeza que não entrem coisas inválidas como?
> > >
> > > GGLH
> > > ou
> > > 2235
> > > ou
> > > 22LH
> > > (tem que começar por letra obrigatoriamente e sempre apos duas
> letras
> > vem
> > > um numero, depois pode vir duas letras e assim vai)
> > >
> > > De fato, o que preciso é que, independente do comprimento (que eu
> sempre
> > > vou garantir ser maior que 4), a string comece por duas letras
> seguidas
> > por
> > > dois numeros, eventualmente seguidos por mais duas letras que,
> > > eventualmente, podem estar seguidas de dois números e assim por
> diante.
> > >
> > > A expressão do Thiago acertou na lata. Mas, existe algum motivo
> especial
> > > para não funcionar no grep? Tipo:
> > >
> > > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > > > echo GG48LH|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
> > > |GG48LH|
> > >
> > > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > > > echo GG48|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
> > > |GG48|
> > >
> > > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > > > echo GG48LH33|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
> > > |GG48LH33|
> > >
> > > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > > > echo GG48LH33|grep '([A-Z]{2}[0-9]{2})+[A-Z]{2}?'
> > >
> > > [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
> > > > echo GG48LH33|grep "([A-Z]{2}[0-9]{2})+[A-Z]{2}?"
> > >
> > >
> > > O grep não imprime o match. Comi bronha?
> > >
> > >
> > > Obrigado pelas dicas de todos
> > > Abraço
> > > Benito
> > >
> > > >
> > >
> > >
> > > On 12/5/07, voyeg3r < [EMAIL PROTECTED]  40yahoo.com.br>>
> > wrote:
> > > >
> > > > --- Em shell-script@yahoogrupos.com.br 40yahoogrupos.com

Re: [shell-script] Re: expressão regular

2007-12-05 Por tôpico Valdir
De tanto eu ler e-mail de expressão regulares, onde eu posso encontrar um 
apostila que possa praticar e apreder a usar, assim como Shell Script.

OBS: de preferência apostilas em português.

Abraço 

Valdir
  - Original Message - 
  From: Josenivaldo Benito Junior 
  To: shell-script@yahoogrupos.com.br 
  Sent: Wednesday, December 05, 2007 4:51 PM
  Subject: Re: [shell-script] Re: expressão regular


  Oi,

  eu acho que expressei-me mau.

  não existe a forma

  GG482733 (que sua expressão pegaria)

  O formato correto é: duas letras+dois números+duas letras+dois números+duas
  letras

  O comprimento total é no máximo 12, mas o mais comum é 4 ou 6 como por
  exemplo:

  GG48LH
  GG67
  GG48
  JH32HG
  ...

  É mais ou menos assim:

  GG -> indica uma grade grande (de latitude e longitude) (quadrada)
  GG48 -> se você dividir o quadro GG em pedacinhos (o tamanho não vem ao
  caso), GG48 representa um dos pedacinhos de GG (um quadro)
  GG48LH -> novamente, divide o quadro GG48 em vários pedaços e GG48LH é um
  desses pedaços, GG48JG é outro e assim vai.

  Exemplo prático:

  O localizador da minha residência é GG67MH (com 6 digitos). Dependendo da
  aplicação eu posso informar:

  GG67 (menos preciso)
  GG67MH (mais preciso)

  Então, o comum na aplicação é aparecerem localizadores, um por linha, assim:

  GG67
  GG35AF
  GG67MH
  GG48LH
  GG67LH
  DF45OP
  DF54

  Eventualmente podem aparecer:

  GG67AF33
  JH34RD25ES

  Mas não estou me preocupando com estes casos, posso cortá-los em 6 digitos
  sem perda de informação relevante à minha aplicação. Cortando esses dois
  exemplo fica:

  GG67AF
  JH34RD

  Mas, não posso aumentar um grid de 4 digitos para para 6 arbitrariamente,
  por exemplo:

  usuário entra com GG48
  eu não posso assumir GG48LH ou GG48JH ou GG48EJ ... tenho que considerar
  apenas GG48

  O que eu tentei fazer inicialmente era consistir qualquer sequencia agrupada
  de duas letras+dois numeros+duas letras+dois numeros e assim por diante. Só
  para ter certeza que não entrem coisas inválidas como?

  GGLH
  ou
  2235
  ou
  22LH
  (tem que começar por letra obrigatoriamente e sempre apos duas letras vem um
  numero, depois pode vir duas letras e assim vai)

  De fato, o que preciso é que, independente do comprimento (que eu sempre vou
  garantir ser maior que 4), a string comece por duas letras seguidas por dois
  numeros, eventualmente seguidos por mais duas letras que, eventualmente,
  podem estar seguidas de dois números e assim por diante.

  A expressão do Thiago acertou na lata. Mas, existe algum motivo especial
  para não funcionar no grep? Tipo:

  [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
  > echo GG48LH|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
  |GG48LH|

  [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
  > echo GG48|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
  |GG48|

  [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
  > echo GG48LH33|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
  |GG48LH33|

  [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
  > echo GG48LH33|grep '([A-Z]{2}[0-9]{2})+[A-Z]{2}?'

  [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
  > echo GG48LH33|grep "([A-Z]{2}[0-9]{2})+[A-Z]{2}?"

  O grep não imprime o match. Comi bronha?

  Obrigado pelas dicas de todos
  Abraço
  Benito

  >

  On 12/5/07, voyeg3r <[EMAIL PROTECTED]> wrote:
  >
  > --- Em shell-script@yahoogrupos.com.br,
  > "Josenivaldo Benito Junior"
  > <[EMAIL PROTECTED]> escreveu
  > >
  > > Olá turma,
  > >
  > > Estou apanhando de uma expressão regular. Para ser sincero já não
  > sei dizer
  > > se ela é possível (deve ser o sono).
  > >
  > > Preciso pegar strings do tipo:
  > >
  > > GG48LH
  > > JH23
  > > JH45ER
  > > FJ87SA76
  > >
  > > Resumindo:
  > >
  > > Sempre tem duas letras (de A até Z) seguidas de dois números (de 0
  > até 9),
  > > podendo estar seguidos mais duas letras, podendo estar seguido de
  > mais dois
  > > números. (duas letras,dois nros., duas letras, dois nros). Mas a
  > informação
  > > pode ter 2,4,6 ou 8 letras (1,2,3 ou 4 conjuntos de letras e números).
  > >
  > > O que são essas coisas? Coordenadas em formato World Locator. De
  > fato podem
  > > ir até 12 algarismos, o comum é 4 ou 6. Na aplicação que estou tentando
  > > capturar podem chegar a 8.
  > >
  > > Tentei algumas coisas básicas. O mais próximo que cheguei foi:
  > >
  > > [A-Z]{2}[0-9]{2}
  >
  > 
  > se o conjunto de números pode ir até 6 faça:
  >
  > [A-Z]{2}[0-9]{2,6}
  >
  > >
  > > Que pega um par de letras somente se for seguido de um par de
  > números. Para
  > > uma string tipo GG48LH23JV vai funcionar em dois matches, tem algum
  > problema
  > > nisso?
  > >
  > > Pegar um par de letras+um par de números e assim por diante, não resolve
  > > toda a situação, pois em 90% dos casos são usados 6 algarismos (ex:
  > GG67MH).
  > >
  > > Alguém pode me dar uma dica?
  > >
  > > Valeu.
  > > Benito
  > >
  > >
  > > [As partes desta mensagem que não continham te

Re: [shell-script] consistência na variável

2007-12-05 Por tôpico Flavio Junior
A ER para IP's jah foi bem debatida na lista..

Da forma que estão fazendo, o IP 999.999.999.999 seria valido, o que
não pode acontecer.

Verifiquem o link:
http://aurelio.net/curso/sucesu/sucesu-seder-prompt.html#toc40

--

Flávio do Carmo Júnior

On Dec 5, 2007 2:08 PM, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
>
>
>
>
>
>
> Olá Rafael,
>
>  Acho que o case não aceita ERs mas em todo caso a ER está errada. Deve ser
>
>
>  [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
>
>  O "*" no final não faz sentido. Teste com a linha abaixo
>
>  ifconfig | egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
>
>  Até
>  Alves
>
>
>  > Salve Salve pessoal...
>  >
>  > To tentando fazer um scriptzinho para verificar se a variável digitada
>  > pelo usuário é consistente ou nao! :)
>  >
>  > tentei fazer de um jeito simples e deu certo
>  >
>  > -
>  > echo "Digite um IP"
>  > read IP
>  >
>  > case ${IP} in
>  > [0-9]*) echo "valido" ;;
>  > *) echo "invalido" ;;
>  > esac
>  > 
>  >
>  > mas quando tento fazer a consistência toda da variável respeitando
>  > (x.x.x.x) nao da certo... :(
>  >
>  > 
>  > case ${IP} in
>  > [0-9]{1-3}\.[0-9]{1-3}\.[0-9]{1-3}\.[0-9]{1-3}*) echo "valido" ;;
>  > *) echo "invalido" ;;
>  > esac
>  > 
>  >
>  > alguém já tentou fazer isso?
>  >
>  > Desde já Obrigado!
>  > Abraço...
>  >
>  >
>
>  


Re: [shell-script] consistência na variáv el

2007-12-05 Por tôpico [EMAIL PROTECTED]
Olá Rafael,

Acho que o case não aceita ERs mas em todo caso a ER está errada. Deve ser

[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}

O "*" no final não faz sentido. Teste com a linha abaixo

ifconfig | egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'

Até
Alves

> Salve Salve pessoal...
>
> To tentando fazer um scriptzinho para verificar se a variável digitada
> pelo usuário é consistente ou nao! :)
>
> tentei fazer de um jeito simples e deu certo
>
> -
> echo "Digite um IP"
> read IP
>
> case ${IP} in
> [0-9]*) echo "valido" ;;
> *) echo "invalido" ;;
> esac
> 
>
> mas quando tento fazer a consistência toda da variável respeitando
> (x.x.x.x) nao da certo... :(
>
> 
> case ${IP} in
> [0-9]{1-3}\.[0-9]{1-3}\.[0-9]{1-3}\.[0-9]{1-3}*) echo "valido" ;;
> *) echo "invalido" ;;
> esac
> 
>
> alguém já tentou fazer isso?
>
> Desde já Obrigado!
> Abraço...
>
>  



Re: [shell-script] Renomear arquivos em massa?

2007-12-05 Por tôpico Tiago Barcellos Peczenyj
Vinícius,

o que foi utilizado no comando abaixo lembra expressões regulares, mas
não é. Isto é uma feature do shell chamada "Pathname Expansion".

O shell expande os caracteres * ? e [ de forma que todos os arquivos e
diretorios que 'casarem' com o padrão são substituidos na linha de
comando.

Faça esse exemplo:

$ echo *

Alem das expansões normais existe outras, as expandidas, que precisa
que a opção extglob do shell esteja ativada, no bash são

  ?(pattern-list)
 Matches zero or one occurrence of the given patterns
  *(pattern-list)
 Matches zero or more occurrences of the given patterns
  +(pattern-list)
 Matches one or more occurrences of the given patterns
  @(pattern-list)
 Matches exactly one of the given patterns
  !(pattern-list)
 Matches anything except one of the given patterns

Mas vc pode utilizar expressões regulares para encotrar arquivos e
mandar para o rm.

find   | xargs rm -i

a opção para o find é -regex

   -regex pattern
  File  name  matches  regular  expression  pattern.
This  is  a match on the whole path, not a search.  For example, to
match a file named
  `./fubar3', you can use the regular expression `.*bar.'
or `.*b.*3', but not `b.*r3'.


[]´s T

On 12/5/07, Vinícius de Figueiredo Silva <[EMAIL PROTECTED]> wrote:
>
> On Dec 5, 2007 9:38 AM, Flavio Junior <[EMAIL PROTECTED]> wrote:
>  >
>  > Existe um tal de "rename" pra isso.. mas eu não gosto :P
>  >
>  >  faça:
>  >  $ for file in *.[jJ][Pp][Gg]; do echo mv $file ${file//_/}; done
>  >
>
>
>  Maneiro, não sabia que podia usar expressões regulares ali no mv! :]
>
>


-- 
Tiago B Peczenyj
Linux User #405772

http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"


[shell-script] Substituir várias linhas em branco por uma linha em branco

2007-12-05 Por tôpico [EMAIL PROTECTED]
Olá pessoal,

A algum tempo que vinha tentando encontrar alguma forma, menos
deselegante possível, de substituir várias linhas em branco em
seqüência, por apenas uma linha em branco. Por exemplo:

$ cat teste.txt





3



445
56
$ _

deve ficar assim:

$ cat teste-new.txt




3

445
56
$ _

Fiz isto com a linha

$ sed ':i ; $! N; s/\n/N/ ; t i ; s/N\{3,\}/NN/g ; s/N/\n/g' test.txt

Para um texto qualquer é conveniente substituir o "N" por algum caracter
como "µ", "Ø", ou algum caracter não existente no texto.

Como não encontrei outras soluções na rede, resolvi expor aqui a idéia.

Explicação:
O sed está dividido em três comandos.
1  :i ; $! N; s/\n/N/; t i=> faz um laço no texto e substitui todas
alimentações de linha (\n) pelo caracter "N"
2  s/N\{3,\}/NN/g   => substitui todas as ocorrências de três N's
(N{3,})  ou mais, por dois N (uma linha em branco)
3  s/N/\n/g=> substitui os Ns por alimentação de linha (\n)

Se alguém tem alguma outra solução mais ou menos elegante para isto?
awk, outro sed, combinações diferentes de comandos...

Até,
Alves


Re: [shell-script] SUID - Permissao Especial

2007-12-05 Por tôpico Paulo
Bom dia lista


tenho uma duvida com esse conversor  pois caso ela esteja usando dialog
o mesmo ira ficar desconfigurado como arrumar isso


obrigado

drolen


mop escreveu:
> Acho que esse lance do suid só funciona para executáveis binários.
> Talvez você possa usar o sudo.
>
> Eu acho que usaria inicialmente um compilador de script.
> No site
> http://www.datsi.fi.upm.es/~frosal/
> o autor diponibiliza o pacote shc (script compiler).
> Basta descompactar e terá o shc.
>
> Coloque a chamada com senha no próprio script e daí você faz:
> shc -f seuScript
>
> Pronto, foi gerado um binário executável.
> Dai você poderia pensar em suid, mas acho desnecessário.
>
> Execute normalmente, mas usando o binário:
> seuScript...
>
> Para ficar mais tranquila pode tentar:
> grep senha seuScript
> para ver se há uma resposta positiva ou abrir em um editor de texto e dar
> um find.
>
> Tomara que venham outras sugestões, acho bem interessante essa questão
> de poder executar sem de forma alguma poder ler conteúdos sensíveis.
>
> Não tenho noção da reversibilidade disso ou do grau de segurança, mas
> acredito que para o seu caso atenda plenamente.
> Aliás o uso do shc poderia ser adicionalmente um "segredo" do dba.
>
>
>
> -
> Esta lista não admite a abordagem de outras liguagens de programação, como 
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
> aviso.
> -
> Sair da lista: [EMAIL PROTECTED]
> -
> Esta lista é moderada de acordo com o previsto em 
> http://www.listas-discussao.cjb.net
> -
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
>  
> Links do Yahoo! Grupos
>
>  
>
>   



Re: [shell-script] Renomear arquivos em massa?

2007-12-05 Por tôpico Flavio Junior
Novo exemplo... Caso os arquivos já não estejam bonitinhos...

Rafael, segue ai meu console, se tiver duvidas so dizer:

# Apenas criando os arquivos pra usar no teste
[EMAIL PROTECTED]:~/test]# RANDOM=1; for i in `seq 1 20`; do >
foto_$RANDOM.jpg; done
# Listando os arquivos
[EMAIL PROTECTED]:~/test]# ls
foto_10113.jpg  foto_12767.jpg  foto_16838.jpg  foto_17543.jpg
foto_23010.jpg  foto_25137.jpg  foto_2749.jpg   foto_32225.jpg
foto_5627.jpg  foto_7419.jpg
foto_12060.jpg  foto_16212.jpg  foto_17515.jpg  foto_21183.jpg
foto_25089.jpg  foto_25566.jpg  foto_31051.jpg  foto_4086.jpg
foto_5758.jpg  foto_9084.jpg
# Permitindo o BASH ignorar maiusculas e minusculas
[EMAIL PROTECTED]:~/test]# shopt -s nocaseglob nocasematch
# Renomeando todos arquivos *.jpg para o formato: fotoNUMERO.jpg
[EMAIL PROTECTED]:~/test]# num=0; for file in *.JPG; do let num+=1; mv
$file ${file/_*.jpg/}${num}.jpg; done
# Listando o resultado
[EMAIL PROTECTED]:~/test]# ls
foto10.jpg  foto12.jpg  foto14.jpg  foto16.jpg  foto18.jpg  foto1.jpg
 foto2.jpg  foto4.jpg  foto6.jpg  foto8.jpg
foto11.jpg  foto13.jpg  foto15.jpg  foto17.jpg  foto19.jpg  foto20.jpg
 foto3.jpg  foto5.jpg  foto7.jpg  foto9.jpg
[EMAIL PROTECTED]:~/test]#


--

Flávio do Carmo Júnior

On Dec 5, 2007 9:42 AM, Vinícius de Figueiredo Silva
<[EMAIL PROTECTED]> wrote:
>
>
>
>
>
>
> On Dec 5, 2007 9:38 AM, Flavio Junior <[EMAIL PROTECTED]> wrote:
>  >
>  > Existe um tal de "rename" pra isso.. mas eu não gosto :P
>  >
>  > faça:
>  > $ for file in *.[jJ][Pp][Gg]; do echo mv $file ${file//_/}; done
>  >
>  > Eu to levando em conta q o nome dos arquivos são todos:
>  > foto_1.jpg
>  > foto_2.jpg
>  > foto_3.jpg
>  >
>  > Se não for isso, de mais informações :)
>  >
>  > Veja q eu deixei um "echo" ali no for, se for exatamente o que vc
>  > quer, só remove-lo.
>  >
>  > --
>  >
>  > Flávio do Carmo Júnior
>
>  Maneiro, não sabia que podia usar expressões regulares ali no mv! :]
>
>
>  --
>  Vinícius.
>  personal site - http://vinicius.oitobits.net
>  gaming blog - http://www.oitobits.net
>  


Re: [shell-script] Renomear arquivos em massa?

2007-12-05 Por tôpico Flavio Junior
Existe um tal de "rename" pra isso.. mas eu não gosto :P

faça:
$ for file in *.[jJ][Pp][Gg]; do echo mv $file ${file//_/}; done

Eu to levando em conta q o nome dos arquivos são todos:
foto_1.jpg
foto_2.jpg
foto_3.jpg

Se não for isso, de mais informações :)

Veja q eu deixei um "echo" ali no for, se for exatamente o que vc
quer, só remove-lo.


--

Flávio do Carmo Júnior

On Dec 5, 2007 8:14 AM, Rafael Tomelin <[EMAIL PROTECTED]> wrote:
>
>
>
>
>
>
> Olá pessoal,
>
>  Como faço para renomear arquivos em massa?
>  Tipo quero fazer um "for" e todos os arquivos que tiverem o "_" tirar o
>  mesmo ou renomear para foto1.jpg.
>
>  Como posso fazer isso?
>
>  [As partes desta mensagem que não continham texto foram removidas]
>
>  


[shell-script] Renomear arquivos em massa?

2007-12-05 Por tôpico Rafael Tomelin
Olá pessoal,

Como faço para renomear arquivos em massa?
Tipo quero fazer um "for" e todos os arquivos que tiverem o "_" tirar o
mesmo ou renomear para foto1.jpg.


Como posso fazer isso?


[As partes desta mensagem que não continham texto foram removidas]



[shell-script] Re: Renomear arquivos em massa?

2007-12-05 Por tôpico gleissonmb


Talvez este link te dê umas idéias...

http://br.groups.yahoo.com/group/shell-script/message/20197

-

--- Em shell-script@yahoogrupos.com.br, "Vinícius de Figueiredo Silva"
<[EMAIL PROTECTED]> escreveu
>
> On Dec 5, 2007 8:14 AM, Rafael Tomelin <[EMAIL PROTECTED]> wrote:
> >
> >
> >
> >
> >
> >
> > Olá pessoal,
> >
> >  Como faço para renomear arquivos em massa?
> >  Tipo quero fazer um "for" e todos os arquivos que tiverem o "_"
tirar o
> >  mesmo ou renomear para foto1.jpg.
> >
> >  Como posso fazer isso?
> >
> 
> Desculpe se for algo muito tosco, eu ainda estou aprendendo.
> Para renomear:
> 
> a=0; for i in *; do mv $i foto$a.jpg; a=$(($a+1)); done
> 
> Para tirar o "_" você pode fazer um loop e usar o sed que infelizmente
> eu não sei quase nada. Defeito que preciso corrigir.
> 
> -- 
> Vinícius.
> personal site - http://vinicius.oitobits.net
> gaming blog - http://www.oitobits.net
>




Re: [shell-script] Renomear arquivos em massa?

2007-12-05 Por tôpico Vinícius de Figueiredo Silva
On Dec 5, 2007 9:38 AM, Flavio Junior <[EMAIL PROTECTED]> wrote:
>
> Existe um tal de "rename" pra isso.. mas eu não gosto :P
>
>  faça:
>  $ for file in *.[jJ][Pp][Gg]; do echo mv $file ${file//_/}; done
>
>  Eu to levando em conta q o nome dos arquivos são todos:
>  foto_1.jpg
>  foto_2.jpg
>  foto_3.jpg
>
>  Se não for isso, de mais informações :)
>
>  Veja q eu deixei um "echo" ali no for, se for exatamente o que vc
>  quer, só remove-lo.
>
>  --
>
>  Flávio do Carmo Júnior

Maneiro, não sabia que podia usar expressões regulares ali no mv! :]

-- 
Vinícius.
personal site - http://vinicius.oitobits.net
gaming blog - http://www.oitobits.net


Re: [shell-script] Renomear arquivos em massa?

2007-12-05 Por tôpico Vinícius de Figueiredo Silva
On Dec 5, 2007 8:14 AM, Rafael Tomelin <[EMAIL PROTECTED]> wrote:
>
>
>
>
>
>
> Olá pessoal,
>
>  Como faço para renomear arquivos em massa?
>  Tipo quero fazer um "for" e todos os arquivos que tiverem o "_" tirar o
>  mesmo ou renomear para foto1.jpg.
>
>  Como posso fazer isso?
>

Desculpe se for algo muito tosco, eu ainda estou aprendendo.
Para renomear:

a=0; for i in *; do mv $i foto$a.jpg; a=$(($a+1)); done

Para tirar o "_" você pode fazer um loop e usar o sed que infelizmente
eu não sei quase nada. Defeito que preciso corrigir.

-- 
Vinícius.
personal site - http://vinicius.oitobits.net
gaming blog - http://www.oitobits.net


Re: [shell-script] SUID - Permissao Especial

2007-12-05 Por tôpico Julio C. Neves
Olá Luciana,
por medida de segurança, o suid não pode ser implementado em nenhum arquivo
interpretado. Imagine se alguém mal intensionado, editasse um arquivo do
root com suid e colocasse somente uma linha: /bin/bash. Desta forma ele
teria todos os recursos que o Bash oferece ao root.

Algumas formas de sair desta:
1 - sudo;
2 - criar um usuário com o userid igual ao seu e colocar o script como shell
deste usuário (último cpo do /etc/passwd). Desta forma qdo o cara se logar,
o script imediatamente será executado e qdo o script terminar será dado
logoff;
3 - Fazer um script que leia a senha (sem ecoar na tela com read -s) e chame
o seu script passando a senha lida.
-- 
Abraços,
Julio
Feliz Natal
:wq

Em 04/12/07, Luciana Cruz <[EMAIL PROTECTED]> escreveu:
>
>   Pessoal,
>
> Estou com um problema relacionada a permissão, se
> alguém puder me ajudar, agradeceria muito.
>
> Fiz um script para validar se o banco oracle está
> disponível, utilizando uma conexão sqlplus (sqlplus
> usuario/[EMAIL PROTECTED]), porém desta forma tenho que
> passar o usuário e a senha no scriptt e como o script
> será executado por outro usuário, tive que dar
> permissão de leitura e execução para o grupo e outros
> (-rwx r-x r-x), mas desta forma os dados ficarão
> visíveis.
>
> Resolvi utilizar SUID. Então criei outro arquivo
> (info.txt) com permissão –rw- --- --- conforme abaixo:
>
> Usuario teste
> Senha 123456
>
> Alterei meu script que contém a conexão com o banco,
> para ler o arquivo info.txt e recuperar o usuário e a
> senha. Também alterei a permissão do meu script para
> 4700 (-rws --- ---)
>
> Com isso o script poderia ser executado por qualquer
> usuário, porém o dono do processo seria eu, que tenho
> permissão de ler o arquivo info.txt, enquanto que os
> demais usuários não conseguem ler o arquivo info.txt.
>
> O script funciona somente quando eu executo com o meu
> login, ou seja, a permissão especial (SUID) não
> funcionou. Gostaria de saber se as permissões que
> configurei em cada arquivo estão corretas ou se alguém
> tem alguma dica sobre como resolver este problema.
>
> Obrigada,
>
> Luciana
>
> Abra sua conta no Yahoo! Mail, o único sem limite de espaço para
> armazenamento!
> http://br.mail.yahoo.com/
>  
>



-- 
Abraços,
Julio
Feliz Natal
:wq


[As partes desta mensagem que não continham texto foram removidas]



-
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
-
Sair da lista: [EMAIL PROTECTED]
-
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
-
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil

 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/shell-script/

<*> Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html

 


Re: [shell-script] Re: expressão regular

2007-12-05 Por tôpico Flavio Junior
Eu considero a melhor delas...

Do descontraido Verde ;)

http://guia-er.sf.net

Belo material totalmente free ;)

--

Flávio do Carmo Júnior

On Dec 5, 2007 5:30 PM, Valdir <[EMAIL PROTECTED]> wrote:
>
>
>
>
>
>
> De tanto eu ler e-mail de expressão regulares, onde eu posso encontrar um
> apostila que possa praticar e apreder a usar, assim como Shell Script.
>
>  OBS: de preferência apostilas em português.
>
>  Abraço
>
>  Valdir
>  - Original Message -
>  From: Josenivaldo Benito Junior
>  To: shell-script@yahoogrupos.com.br
>  Sent: Wednesday, December 05, 2007 4:51 PM
>  Subject: Re: [shell-script] Re: expressão regular
>
>  Oi,
>
>  eu acho que expressei-me mau.
>
>  não existe a forma
>
>  GG482733 (que sua expressão pegaria)
>
>  O formato correto é: duas letras+dois números+duas letras+dois números+duas
>  letras
>
>  O comprimento total é no máximo 12, mas o mais comum é 4 ou 6 como por
>  exemplo:
>
>  GG48LH
>  GG67
>  GG48
>  JH32HG
>  ...
>
>  É mais ou menos assim:
>
>  GG -> indica uma grade grande (de latitude e longitude) (quadrada)
>  GG48 -> se você dividir o quadro GG em pedacinhos (o tamanho não vem ao
>  caso), GG48 representa um dos pedacinhos de GG (um quadro)
>  GG48LH -> novamente, divide o quadro GG48 em vários pedaços e GG48LH é um
>  desses pedaços, GG48JG é outro e assim vai.
>
>  Exemplo prático:
>
>  O localizador da minha residência é GG67MH (com 6 digitos). Dependendo da
>  aplicação eu posso informar:
>
>  GG67 (menos preciso)
>  GG67MH (mais preciso)
>
>  Então, o comum na aplicação é aparecerem localizadores, um por linha,
> assim:
>
>  GG67
>  GG35AF
>  GG67MH
>  GG48LH
>  GG67LH
>  DF45OP
>  DF54
>
>  Eventualmente podem aparecer:
>
>  GG67AF33
>  JH34RD25ES
>
>  Mas não estou me preocupando com estes casos, posso cortá-los em 6 digitos
>  sem perda de informação relevante à minha aplicação. Cortando esses dois
>  exemplo fica:
>
>  GG67AF
>  JH34RD
>
>  Mas, não posso aumentar um grid de 4 digitos para para 6 arbitrariamente,
>  por exemplo:
>
>  usuário entra com GG48
>  eu não posso assumir GG48LH ou GG48JH ou GG48EJ ... tenho que considerar
>  apenas GG48
>
>  O que eu tentei fazer inicialmente era consistir qualquer sequencia
> agrupada
>  de duas letras+dois numeros+duas letras+dois numeros e assim por diante. Só
>  para ter certeza que não entrem coisas inválidas como?
>
>  GGLH
>  ou
>  2235
>  ou
>  22LH
>  (tem que começar por letra obrigatoriamente e sempre apos duas letras vem
> um
>  numero, depois pode vir duas letras e assim vai)
>
>  De fato, o que preciso é que, independente do comprimento (que eu sempre
> vou
>  garantir ser maior que 4), a string comece por duas letras seguidas por
> dois
>  numeros, eventualmente seguidos por mais duas letras que, eventualmente,
>  podem estar seguidas de dois números e assim por diante.
>
>  A expressão do Thiago acertou na lata. Mas, existe algum motivo especial
>  para não funcionar no grep? Tipo:
>
>  [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
>  > echo GG48LH|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
>  |GG48LH|
>
>  [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
>  > echo GG48|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
>  |GG48|
>
>  [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
>  > echo GG48LH33|sed -r 's/([A-Z]{2}[0-9]{2})+[A-Z]{2}?/|&|/'
>  |GG48LH33|
>
>  [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
>  > echo GG48LH33|grep '([A-Z]{2}[0-9]{2})+[A-Z]{2}?'
>
>  [rdlxsr02][wjb069_teDebug][/home/sw/wjb069]
>  > echo GG48LH33|grep "([A-Z]{2}[0-9]{2})+[A-Z]{2}?"
>
>  O grep não imprime o match. Comi bronha?
>
>  Obrigado pelas dicas de todos
>  Abraço
>  Benito
>
>  >
>
>  On 12/5/07, voyeg3r <[EMAIL PROTECTED]> wrote:
>  >
>  > --- Em
> shell-script@yahoogrupos.com.br,
>  > "Josenivaldo Benito Junior"
>  > <[EMAIL PROTECTED]> escreveu
>  > >
>  > > Olá turma,
>  > >
>  > > Estou apanhando de uma expressão regular. Para ser sincero já não
>  > sei dizer
>  > > se ela é possível (deve ser o sono).
>  > >
>  > > Preciso pegar strings do tipo:
>  > >
>  > > GG48LH
>  > > JH23
>  > > JH45ER
>  > > FJ87SA76
>  > >
>  > > Resumindo:
>  > >
>  > > Sempre tem duas letras (de A até Z) seguidas de dois números (de 0
>  > até 9),
>  > > podendo estar seguidos mais duas letras, podendo estar seguido de
>  > mais dois
>  > > números. (duas letras,dois nros., duas letras, dois nros). Mas a
>  > informação
>  > > pode ter 2,4,6 ou 8 letras (1,2,3 ou 4 conjuntos de letras e números).
>  > >
>  > > O que são essas coisas? Coordenadas em formato World Locator. De
>  > fato podem
>  > > ir até 12 algarismos, o comum é 4 ou 6. Na aplicação que estou tentando
>  > > capturar podem chegar a 8.
>  > >
>  > > Tentei algumas coisas básicas. O mais próximo que cheguei foi:
>  > >
>  > > [A-Z]{2}[0-9]{2}
>  >
>  > 
>  > se o conjunto de números pode ir até 6 faça:
>  >
>  > [A-Z]{2}[0-9]{2,6}
>  >
>  > >
>  > > Que pega um par de letras somente se for seguido de um par de
>  > números. Para
>  > > uma 

Re: [shell-script] Renomear arquivos em massa?

2007-12-05 Por tôpico Julio C. Neves
Aê Rafael,
$ Nome=Julio_Cezar_Neves
$ echo ${Nome//_/}
JulioCezarNeves

então:
for Arq in *
do
mv $Arq ${Arq//_/}
done
-- 
Abraços,
Julio
Feliz Natal
:wq


Em 05/12/07, Rafael Tomelin <[EMAIL PROTECTED]> escreveu:
>
>   Olá pessoal,
>
> Como faço para renomear arquivos em massa?
> Tipo quero fazer um "for" e todos os arquivos que tiverem o "_" tirar o
> mesmo ou renomear para foto1.jpg.
>
> Como posso fazer isso?
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



Re: [shell-script] Re: Sugestão

2007-12-05 Por tôpico SysOp LinuxNoc
Concordo, creio que um wiki seria o ideal, se precisarem de hospedagem, 
eu forneço uma.


voyeg3r escreveu:
>
> Creio que um wiki seria o ideal, não acha?
>
> --- Em shell-script@yahoogrupos.com.br 
> , "Marcelo Salhab Brogliato"
> <[EMAIL PROTECTED]> escreveu
> >
> > Olá a todos,
> >
> > sou cadastro na lista a algum tempo e venho acompanhando o
> > maravilhoso trabalho que cada um aqui faz, ajudando e compartilhando
> > conhecimento.
> > Por enquanto, não sei muita coisa sobre sobre shell-script,
> > então acabo mais lendo que participando. Mas espero daqui a
> > um tempo (um longo tempo, rs) eu possa também estar ajudando!
> > Porém, tive uma idéia! Que tal criarmos um local onde os moderadores
> > possam colocar os scripts criados por pessoas da lista... claro
> > que com direitos autorais, e somente com autorização dos criadores.
> > Podemos ligar tópicos de problemas comuns aos scripts e permitir
> > buscas. Além disso, podemos criar níveis de solução, de uma básica
> > até uma avançada. Qualquer um pode contribuir melhorando, indicando
> > bugs, etc.
> >
> > Bom, estou disposto a iniciar um projeto deste tipo, e também
> > consigo um servidor para hospedarmos isso (99% de certeza).
> >
> > Aguardo um retorno dos amigos.
> >
> > Um abraço de quem muito aprende com vocês,
> > Salhab
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
>
>  



Re: [shell-script] Substituir várias linhas em branco por uma linha em branco

2007-12-05 Por tôpico Flavio Junior
Hm... Seguindo a ideia de que uma linha vazia é igual a outra linha vazia...

[EMAIL PROTECTED] ~]# cat txt
xxx:aaa,eee,bbb


aaa:ddd







adfa

adfa
[EMAIL PROTECTED] ~]# cat txt | uniq
xxx:aaa,eee,bbb

aaa:ddd

adfa

adfa
[EMAIL PROTECTED] ~]#


--

Flávio do Carmo Júnior

On Dec 5, 2007 1:17 PM, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
>
>
>
>
>
>
> Olá pessoal,
>
>  A algum tempo que vinha tentando encontrar alguma forma, menos
>  deselegante possível, de substituir várias linhas em branco em
>  seqüência, por apenas uma linha em branco. Por exemplo:
>
>  $ cat teste.txt
>  
>
>  
>
>  3
>
>  445
>  56
>  $ _
>
>  deve ficar assim:
>
>  $ cat teste-new.txt
>  
>
>  
>
>  3
>
>  445
>  56
>  $ _
>
>  Fiz isto com a linha
>
>  $ sed ':i ; $! N; s/\n/N/ ; t i ; s/N\{3,\}/NN/g ; s/N/\n/g' test.txt
>
>  Para um texto qualquer é conveniente substituir o "N" por algum caracter
>  como "µ", "Ø", ou algum caracter não existente no texto.
>
>  Como não encontrei outras soluções na rede, resolvi expor aqui a idéia.
>
>  Explicação:
>  O sed está dividido em três comandos.
>  1 :i ; $! N; s/\n/N/; t i => faz um laço no texto e substitui todas
>  alimentações de linha (\n) pelo caracter "N"
>  2 s/N\{3,\}/NN/g => substitui todas as ocorrências de três N's
>  (N{3,}) ou mais, por dois N (uma linha em branco)
>  3 s/N/\n/g => substitui os Ns por alimentação de linha (\n)
>
>  Se alguém tem alguma outra solução mais ou menos elegante para isto?
>  awk, outro sed, combinações diferentes de comandos...
>
>  Até,
>  Alves
>