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: Paulo Soares Drumond
Subject: Re: [shell-script] Dificuldades com expressões regulares
Date: Tue, 16 Jul 2013 23:59:45 -0300

Ainda não voltei a trabalhar, mas peguei o código do script gerado e que
funcionou para os meus propósitos. Ao fim de sua execução eu tinha os 100
arquivos (de img1.inc a img100.inc) criados no diretório. Segue abaixo:
indice=0
achou=0

cat Grid_Imagens.txt | while read LINHA
do
  if [[ "$LINHA" =~ ^POROSITY_* ]]
    then
      achou=1
      let indice++
      echo "*POR *ALL" > img${indice}.inc
    else
      if [ $achou = 1 ]
        then
        if [[ "$LINHA" =~ ^\*\* ]]
          then
            echo "nada" > /dev/null
        elif [[ "$LINHA" =~ ^PERMEABILITY_I ]]
          then
            echo "*PERMI *ALL" >> img${indice}.inc
        elif [[ "$LINHA" =~ ^PERMEABILITY_J ]]
          then
            echo "*PERMJ *ALL" >> img${indice}.inc
        elif [[ "$LINHA" =~ ^PERMEABILITY_K ]]
          then
            echo "*PERMK *ALL" >> img${indice}.inc
        elif [[ "$LINHA" =~ ^NTG ]]
          then
            echo "*NETGROSS *ALL" >> img${indice}.inc
        else
         echo $LINHA >> img${indice}.inc
        fi
      fi
  fi
done

O arquivo Grid_Imagens.txt possui vários blocos de texto sempre iniciados
por POROSITY_<num>. Eu precisava quebrar cada bloco assim iniciado gerando
arquivos diferentes. Adicionalmente, precisava alterar algumas
palavras-chave preparando o arquivo para a sua real utilização. Ou seja, a
estrutura dele é assim:

<texto>
POROSITY_1
<texto>
...
<blocos de texto iniciados por PERMEABILITY_num, NTG_num, etc>
<texto>
...
POROSITY_2
...

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)


Em 13 de julho de 2013 21:52, Paulo Soares Drumond
<address@hidden>escreveu:

> Agora vi as respostas de todos. Acabei utilizando o operador =~ e o [[ ]].
>
> Funcionou tão bem que alterei até outras strings que estavam no arquivo.
> No dia 30 retorno de férias e disponibilizo um trecho do arquivo e a
> solução encontrada.
>
> Obrigado a todos,
>
> 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)
>
>
> Em 13 de julho de 2013 21:49, Paulo Soares Drumond <address@hidden>escreveu:
>
> Obrigado, Saulo,
>>
>> Agora entrei em férias e com a ajuda de um colega acabamos tendo sucesso.
>> Quando retornar, posto aqui o resultado final. Mas vou olhar o link e o sed
>> também.
>>
>> 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)
>>
>>
>> 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]



reply via email to

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