The UNIX and Linux Forums  


Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
google unix.com



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Extraindo uma string de um arquivo e procurar a mesma seqüência em outros arquivos mohancrr Programação Shell Script e 1 09-19-2007 04:17
Perl: busca de uma string em um arquivo ... pondlife Programação Shell Script e 4 09-17-2007 08:35
Oi! Procurando por uma cadeia de texto em UNIX skwadim UNIX para Dummies Perguntas & Respostas 1 12-22-2006 01:13
Pesquisando diretório para o arquivo que contém algum texto. LordJezo UNIX para Dummies Perguntas & Respostas 4 04-04-2006 09:58
Ajuda com pesquisar um arquivo texto thekid2 Programação Shell Script e 6 01-02-2004 02:09

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 04-28-2008
meevagh meevagh is offline
Usuário
  
 

Join Date: Apr 2008
Posts: 7
PERL: Procurando por uma string em um arquivo texto problema

Procurando um pouco de ajuda. Eu preciso de pesquisa para uma seqüência de palavras, mas, infelizmente, estas palavras estão localizados em linhas separadas.

por exemplo, o texto de saída é:

Unidos
Chanmpions
Ronaldo
Liverpul
Perdedores
Torres


e meu script código é

print ( "DEBUG - verificar arquivo mensagem");
while (<FILE>) (
$ linha \u003d $ _;

if ($ linha \u003d ~ / United /) (
print ( "\ nAbout para enviar e-mail \ n");
sendEmail ($ contatos,
"",
"Acompanhamento",
"\ nPor favor esteja ciente de que existe um problema."
"",
"");
)

o script acima irá mandar um e-mail quando se localiza Unidos, mas eu preciso mandar um e-mail quando fica Unidos Campeões Ronaldo.

Pensei algo como
if ($ linha \u003d ~ / United / n Campeões / n Ronaldo /)

Mas nada de sorte.

Todas as sugestões quanto ao modo de ir a esse respeito.
  #2 (permalink)  
Old 04-28-2008
photon's Avatar
fóton photon is offline
Usuário
  
 

Join Date: Jul 2002
Lugares: 162
$ linha \u003d ~ / (United | Chanmpions | Ronaldo | LiverpoolLosers | Torres) / i
  #3 (permalink)  
Old 04-28-2008
meevagh meevagh is offline
Usuário
  
 

Join Date: Apr 2008
Posts: 7
Oi Photon, Obrigado pela resposta.
Mas não muito o que estou tentando fazer, eu poderia ter problemas explicou um pouco melhor.

Meu problema é que eu só quero mandar um e-mail se as linhas
Unidos
Campeões
Ronaldo
ocorrer imediatamente após a si como polegadas

Exemplo de arquivo de texto

Unidos
Chanmpions
Ronaldo
Liverpul
Perdedores
Torres


Eu não quero enviar um e-mail apenas se as palavras estão localizadas no arquivo, por exemplo, eu não quero enviar um e-mail se for arquivo texto

Unidos
Campeões
Torres
Liverpul
Perdedores
Ronaldo

como as linhas im dont interessado ocorrer na ordem correta.
  #4 (permalink)  
Old 04-28-2008
photon's Avatar
fóton photon is offline
Usuário
  
 

Join Date: Jul 2002
Lugares: 162
$ linha \u003d ~ / [United]? \ s? [Chanmpions]? \ s? [Ronaldo]? \ s? /

Última edição por fótons; em 04/28/2008 03:43..
  #5 (permalink)  
Old 04-28-2008
KevinADC KevinADC is offline Forum Advisor  
Usuário
  
 

Join Date: Jan 2008
Lugares: 731
Citação:
Originally Posted by fóton View Post
$ linha \u003d ~ / [Unidos \ s]? [Chanmpions \ s]? [Ronaldo \ s]? /
O código acima está errado, pois é um uso incorreto de caráter classes: [], que corresponde a nenhum dos personagens dentro dos colchetes em qualquer ordem. Você não pode usá-los para corresponder palavras inteiras, ou pelo menos não facilmente effciently ou na maneira como eles são usados acima. Plus, que também verificar apenas uma linha do arquivo de uma só vez.
  #6 (permalink)  
Old 04-28-2008
photon's Avatar
fóton photon is offline
Usuário
  
 

Join Date: Jul 2002
Lugares: 162
Substituí-lo, o ponto era usar uma expressão regular liner em vez de usar hashes e loops e recebendo todos os complexos. Eu gostaria de ter o tempo para testar todas as minhas código, mas estou no trabalho tempo.
  #7 (permalink)  
Old 04-28-2008
quine quine is offline
Usuário
  
 

Join Date: Mar 2008
Local: Bay Area Califórnia
Lugares: 68
Duas abordagens ....

1. Procurar por qualquer uma das palavras em cada linha e cada vez que você encontrar um, adicioná-la a um hash ... por exemplo $ somehash ( "Renaldo") \u003d 1;

Quando tiver terminado digitalizar todo o arquivo, verifique o valor hash resultante da existência de todas as palavras ....

if ($ existe somehash ( "Renaldo") & & $ existe somehash ( "loosers") & & existe ...) (enviar e-mail ... )

Algo assim ....

OU ....

Você poderia tentar um padrão similar

$ FILEBUFFER \u003d ~ / (A | B | C | D). + (A | B | C | D). + (A | B | C | D ).... / é

Você simplesmente repetir as alternativas mais e mais novamente separados por um ou mais de qualquer natureza, e de que maneira você pegar todos eles se apresentam, não importa o que o fim .... Você tem que testar os resultantes captura para ver se todas as palavras estão presentes ... Nota: o "se" no final do padrão ... "i" causas caso de ser ignorado, e "s", afirma a contar uma nova linha como uma das "quaisquer caracteres", que lhe permite igualar em toda a linha ... Note que neste caso $ FILEBUFFER contém todo o arquivo (ver LER ()), e não uma linha ....
Closed Thread

Marcadores

Tags
linux, perl, perl turnos, deslocar, turnos perl

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 03:45.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0