[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
>
>