![]() |
Hej och välkommen från 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 |
| hur man kan flytta filen pekaren till en viss linje i C | user_prady | High Level Programming | 7 | 03-27-2008 12:32 |
| återlämna föregående rad | user_prady | Shell-programmering och Skript | 12 | 12-18-2007 07:37 |
| hur man kan gå tidigare linje i vim | useless79 | UNIX för avancerade & Expertanvändare | 2 | 09-16-2007 09:10 |
| söka och hämta föregående rad i filen | paulsew | Shell-programmering och Skript | 2 | 02-23-2007 08:04 |
| Föregående dagens datum i Perl? | rajus19 | Shell-programmering och Skript | 4 | 07-18-2006 01:40 |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
||||
|
Perl att flytta pekaren till föregående rad i en txt-fil?
Jag har en textfil som har block av text. Varje block inleds med # # # och avslutas med End_ # # #.
Jag skrev ett perl skript för att söka ett snöre från linje 2 (ignorera alla rader börjar med # # #) av varje block Om matchas, måste skriva ut det hela kvarteret. Enligt indatafilen i nedan, kommer den att skriva block # 02, # 04, # 05. Här är min fråga, har jag inga problem att matcha SEARCH_STR, men en gång matchas, hur får jag gå tillbaka tidigare rader? t.ex. i block # 02, motsvaras i linje 3, men jag måste skriva ut linjerna 1 & 2. Tack på förhand för all hjälp! Mitt manus: \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d #! / 46020/local/bin /perl -w # if ($ # ARGV! \u003d 0) ( print "Du måste ange ett sökvillkor. \ n"; exit; ) my $ query \u003d $ ARGV [0]; my $ input \u003d "/ mypath / inputFILE.txt"; min $ line; my $ tag \u003d 0; my @ resultat \u003d (); open (FILE, "<$ INPUT") or die "Kan inte öppna '$ input' fil: $!"; while ($ line \u003d <file>) ( next if ($ line \u003d ~ / ^ # [0-9] [0-9] .* - / | | $ line \u003d ~ / ^ \ s *$/); if ($ line \u003d ~ / $ query / i) ( $ tag \u003d 1; ) if ($ line \u003d ~ / ^ End_ # / & & $ tag \u003d\u003d 1) ( push (@ resultat, $ line) if ($ tag \u003d\u003d 1); $ tag \u003d 0; ) push (@ resultat, $ line) if ($ tag \u003d\u003d 1); ) nära (FILE); print "@ resultatet \ n"; exit; Indatafilen: \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d # 01 - block startlinjen här Some text here mer text här fler linjer fler linjer fler linjer End_ # 01 # 02 - block startlinjen här Some text here innehåller raden SEARCH_STR och något fler linjer fler linjer End_ # 02 # 03 - block startlinjen här Some text here mer text här fler linjer fler linjer fler linjer End_ # 03 # 04 - block startlinjen här Some text here fler linjer fler linjer den SEARCH_STR är här och något Some text here fler linjer fler linjer fler linjer End_ # 04 # 05 - block startlinjen här Some text here fler linjer den SEARCH_STR är här och något fler linjer End_ # 05 # 06 - block startlinjen här Some text here mer text här fler linjer fler linjer fler linjer End_ # 06 |