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 Alves Martins
Subject: Re: [shell-script] Dificuldades com expressões regulares
Date: Fri, 12 Jul 2013 12:17:24 -0700 (PDT)

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]



reply via email to

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