![]() |
Hej och välkommen från USA till UNIX och Linux Forum! Tack för ditt besök och gå med i vår globala gemenskapen.
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här. |
Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Senaste Inlägg |
| Extrahera en sträng från en fil och söka samma snöre i andra filer | mohancrr | Shell-programmering och Skript | 1 | 09-19-2007 04:17 |
| Perl: söker efter en sträng i en fil ... | pondlife | Shell-programmering och Skript | 4 | 09-17-2007 08:35 |
| Hej! Söker efter en textsträng i UNIX | skwadim | UNIX for Dummies Frågor & Svar | 1 | 12-22-2006 01:13 |
| Sökning katalogen för filen som innehåller lite text. | LordJezo | UNIX for Dummies Frågor & Svar | 4 | 04-04-2006 09:58 |
| Hjälp med att söka en textfil | thekid2 | Shell-programmering och Skript | 6 | 01-02-2004 02:09 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
PERL: Söka efter en sträng i en textfil problem
Söker du lite hjälp. Jag behöver för att söka efter en sträng av ord, men tyvärr dessa ord finns på separata rader.
exempelvis texten produktionen: United Chanmpions Ronaldo Liverpool Förlorare Torres och min skriptkod är print ( "Debug - kontrollera filen meddelande"); while (<file>) ( $ rad \u003d $ _; if ($ line \u003d ~ / United /) ( print ( "\ nAbout att skicka e-post \ n"); sendEmail ($ kontakter "" "Monitoring" "\ nTa vara medveten om att det finns ett problem." "" ""); ) ovanstående skript kommer att skicka ut ett e-post när det lokaliserar United, men jag måste skicka ut ett e-post när det blir United Champions Ronaldo. Jag trodde att något liknande if ($ line \u003d ~ / United / n Champions / n Ronaldo /) Men ingen lycka. Eventuella förslag till hur att gå åt detta. |
|
||||
|
Hej fotonstråle, Tack för svaret.
Men inte riktigt vad jag försöker göra, jag problem kunde ha förklarat lite bättre. Mitt problem är att jag bara vill skicka ut ett e-post om de linjer United Champions Ronaldo uppträda direkt efter varandra i. Provet textfil United Chanmpions Ronaldo Liverpool Förlorare Torres I dont vill skicka ett e-post bara om orden finns i filen till exempel I dont vill skicka ett e-postmeddelande om text filen United Champions Torres Liverpool Förlorare Ronaldo som linjer im intresserade dont inträffa i rätt ordning. |
|
||||
|
Ovanstående kod är fel eftersom det är en felaktig användning av karaktärer: [] som matchar något av tecknen inom hakparenteser i vilken ordning. Du kan inte använda dem för att matcha hela ord, åtminstone inte lätt eller effciently eller på det sätt de används ovan. Plus att det också skulle kolla bara en raden i en fil i taget.
|
|
||||
|
Två metoder ....
1. Sök efter något av orden på varje rad och varje gång du hittar en, lägg den i en hash ... t.ex. $ somehash ( "Renaldo") \u003d 1; När du är klar med skanningen hela filen, kontrollera de hash för förekomsten av alla ord .... if (finns $ somehash ( "Renaldo") & & finns $ somehash ( "loosers") & & finns ...) (skicka e-post ... ) Nåt sånt .... ELLER .... Du kan prova ett mönster liksom $ FILEBUFFER \u003d ~ / (A | B | C | D). + (A | B | C | D). + (A | B | C | D ).... / är Du bara upprepa alternativ om och om igen åtskilda av en eller flera av någon karaktär, och det sätt du fånga dem alla om det finns oavsett vad så .... Du måste testa den fångst för att se om alla ord är närvarande ... Notera "är" i slutet av mönster ... "i" orsakar fallet som ska ignoreras, och "S" säger att räkna en newline som en av "alla tecken" som gör att du kan matcha hela rader ... Observera att i detta fall $ FILEBUFFER innehåller hela filen (se LÄS ()), inte en linje .... |
![]() |
| Komihåglista |
| Taggar |
| linux, perl, perl skift, växla, skift perl |
| Thread Tools | Sök i denna tråd |
| Visningslägen | Betygsätt denna tråd |
|
|