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

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

Re: [shell-script] Dificuldades com expressões regulares


From: Saulo
Subject: Re: [shell-script] Dificuldades com expressões regulares
Date: Sat, 13 Jul 2013 11:23:35 -0300

Grande Julio, bom dia.

Concordo que é possível usar ER em um comando para o IF testar sua saída 
(retorno). Mas na essência está se testando uma condição para a execução de uma 
ação ou outra.

Em minha reposta provavelmente não traduzi o que queria expressar.

Em resumo queria dizer: acho mais adequado e conciso usar um comando que trata 
"melhor" fluxo (stream) de caracteres, como o sed, usando ER para procurar os 
padrões desejados.

Obrigado pelo apontamento e aproveito  para pedir desculpa ao Paulo pelas 
minhas palavras. Relendo agora vejo que o inicio não foi muito apropriado.

Abraço a todos.

Enviado via iPhone

Em 12/07/2013, às 19:33, "Julio C. Neves" <address@hidden> escreveu:

> Fala Saulo,
> Veja se esse fragmento de código (usando RegExp) não funciona para criticar
> hora:
> 
> if [[ $1 =~ ^([01]?[0-9]|2[0123]):[0-5][0-9]$ ]]
> then
> echo Hora OK
> else
> echo Hora NOK
> fi
> 
> Depois faça echo ${BASH_REMATCH[@]}. O que vc está vendo é o casamento
> total e os retrovisores.
> 
> Resumo: Usando o operador =~ vc pode usara ERs no cmd test.
> 
> Abcs,
> Julio
> *@juliobash
> *
> 
> 
> 
> Em 12 de julho de 2013 16:17, Saulo Alves Martins
> <address@hidden>escreveu:
> 
>> **
>> 
>> 
>> Boa tarde Paulo,
>> 
>> O problema do seu código é que ele não faz o que você espera.
>> 
>> Sua ER não está correta e também no local errado. Não se usa if para se
>> procurar um padrão.
>> 
>> Com o comando sed você pode fazer o que precisa, ele pode procurar (casar)
>> o seu padrão, manter o arquivo original e gerar um novo arquivo com a parte
>> (mudança) desejada.
>> 
>> Dê uma olhada no comando sed e em ER que você consegue.
>> 
>> Uma fonte para consulta: http://aurelio.net/sed/sed-HOWTO/
>> 
>> Se não conseguir, me disponho a fazer um código para sua finalidade. (me
>> manda seu arquivo base para testar.)
>> 
>> Abraço.
>> Saulo.
>> 
>> ________________________________
>> De: Paulo Soares Drumond <address@hidden>
>> Para: Lista de discussão sobre Shell Script <
>> address@hidden>
>> Enviadas: Sexta-feira, 12 de Julho de 2013 15:30
>> Assunto: [shell-script] Dificuldades com expressões regulares
>> 
>> 
>> 
>> Boa tarde senhores,
>> 
>> De antemão já peço perdão pela ignorância em Shell Script, mas tenho
>> extrema dificuldade no manuseio de expressões regulares. Pesquisei aqui em
>> livros, sites, fiz alguns testes, mas não consigo fazer o que quero.
>> 
>> Tenho um arquivo com alguns padrões repetidos e preciso para cada um destes
>> padrões gerar um arquivo separado. O delimitador disso é a palavra-chave
>> POROSITY_<num>, sendo <num> um número variando de 1 a 100. Ou seja,
>> identifiquei que a linha começa com "POROSITY" começo a escrever um novo
>> arquivo até encontrar a próxima linha começada por "POROSITY".
>> 
>> Fiz um script pequeno, mas estou esbarrando na comparação. Ele agora não dá
>> erro, mas não acha nunca esse padrão. Incluí umas linhas para analisar a
>> saída e às vezes, o variável LINHA tem o conteúdo de um "ls" no diretório.
>> Alguém tem uma sugestão?
>> 
>> O script é:
>> #!/bin/bash
>> 
>> indice=-1
>> achou=0
>> 
>> cat Grid_Imagens.txt | while read LINHA
>> do
>> if [ "$LINHA" != ^POROSITY ]
>> then
>> if [ $achou = 1 ]
>> then
>> echo $LINHA >> img${indice}.inc
>> fi
>> else
>> achou=1
>> let indice++
>> echo $LINHA > img${indice}.inc
>> fi
>> done
>> 
>> Paulo
>> http://homens-ibcc.blogspot.com
>> https://www.twitter.com/PSDrumond
>> https://www.facebook.com/psdrumond
>> 
>> "Não me envergonho do evangelho, porque é o poder de Deus para a salvação
>> de todo aquele que crê." (Romanos 1:16)
>> 
>> [As partes desta mensagem que não continham texto foram removidas]
>> 
>> [As partes desta mensagem que não continham texto foram removidas]
> 
> 
> [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: address@hidden
> ---------------------------------------------------------------------
> 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
> 
> 


reply via email to

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