![]() |
|
|
Google unix.com
|
|||||||
| Foren | Registrieren | Forum-Regeln | Links | Alben | FAQ | Benutzerliste | Kalender | Suche | Die heutige Beiträge | Alle Foren als gelesen markieren |
| Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier. |
Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
|
||||
| Faden | Thread Starter | Forum | Antworten | Last Post |
| So verschieben Sie Datei-Zeiger auf eine bestimmte Zeile in c | user_prady | High-Level-Programmierung | 7 | 03-27-2008 12:32 AM |
| Rückkehr der vorherigen | user_prady | Shell Programmierung und Scripting | 12 | 12-18-2007 07:37 AM |
| wie es weiter gehen vorherige Zeile in vim | useless79 | UNIX für Fortgeschrittene und Experten | 2 | 09-16-2007 09:10 AM |
| Suchen und Abrufen von vorherigen Zeile in der Datei | paulsew | Shell Programmierung und Scripting | 2 | 02-23-2007 08:04 AM |
| Vortag Datum in Perl? | rajus19 | Shell Programmierung und Scripting | 4 | 07-18-2006 01:40 AM |
![]() |
|
|
LinkBack | Thread Tools | Suche diesen Thread | Rate Thread | Anzeige-Modi |
|
|
|
||||
|
Perl, wie Sie Zeiger auf die vorherige Zeile in einer txt-Datei?
Ich habe eine Text-Datei, die Textblöcke. Jeder Block beginnt mit # # # und endet mit End_ # # #.
Ich schrieb ein perl Skript für die Suche einen String aus Zeile 2 (ignoriert jede Zeile beginnt mit # # #) für jeden Block wenn zutrifft, müssen, um die ganzen Block. Nach der Eingabedatei unten, es gibt Blocks # 02, # 04, # 05. Hier ist meine Frage, habe ich keine Probleme den passenden SEARCH_STR, aber einmal mit, wie kann ich sie wieder zurück Richtung? z. B. im Block # 02, mit der Linie 3, aber ich brauche, um Linien 1 & 2. Vielen Dank im Voraus für jede Hilfe! Mein Skript: \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d #! / 46020/local/bin /perl -w # if ($ # ARGV! \u003d 0) ( print "Sie müssen die Suchkriterien. \ n"; exit; ) my $ query \u003d $ ARGV [0]; my $ input \u003d "/ mypath / inputFILE.txt"; my $ line; my $ tag \u003d 0; my @ results \u003d (); open (FILE, "<$ input") or die "Can't open '$ INPUT"-Datei: $! "; 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 (@ Ergebnisse, $ line) if ($ tag \u003d\u003d 1); $ tag \u003d 0; ) push (@ Ergebnisse, $ line) if ($ tag \u003d\u003d 1); ) close (FILE); print "@ Ergebnisse \ n"; exit; Eingabedatei: \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d # 01 - Block Startlinie hier Text hier mehr Text hier mehrere Zeilen mehrere Zeilen mehrere Zeilen End_ # 01 # 02 - Block Startlinie hier Text hier Diese Zeile enthält den SEARCH_STR und etwas mehrere Zeilen mehrere Zeilen End_ # 02 # 03 - Block Startlinie hier Text hier mehr Text hier mehrere Zeilen mehrere Zeilen mehrere Zeilen End_ # 03 # 04 - Block Startlinie hier Text hier mehrere Zeilen mehrere Zeilen die SEARCH_STR hier ist und etwas Text hier mehrere Zeilen mehrere Zeilen mehrere Zeilen End_ # 04 # 05 - Block Startlinie hier Text hier mehrere Zeilen die SEARCH_STR hier ist und etwas mehrere Zeilen End_ # 05 # 06 - Block Startlinie hier Text hier mehr Text hier mehrere Zeilen mehrere Zeilen mehrere Zeilen End_ # 06 |
|
||||
|
Wenn Smiling_Dragons Vorschlag nicht funktioniert, können Sie die Tie:: File-Modul, mit dem Sie Lese-und Schreibzugriff auf eine Datei wie ein perl Array. Siehe den Tie:: File-Dokumentation für den Einsatz Details. Es ist auch ein Core-Modul, so sollten Sie es bereits installiert. Wenn du nach hinten.
|
|
||||
|
Möchte nur klarstellen, nach dem inputFILE.txt, wenn das Skript mit dem SEARC_STR wird PRINT # 02, # 04, # 05 Blöcke. zB Skriptname Suche.
Mein Code der Lage zu drucken und mit folgenden Zeilen bis zu End_ # # #, aber ich brauche eine Möglichkeit, Druck, bevor mit in diesen Block. Danke. |
|
||||
|
Ja, ich denke, wir beide verstehen, dass die Anforderung, und die beiden Vorschläge verwendet werden kann, zu tun, was Sie wollen. Wenn Sie mit Durchschleifen perl Arrays mit Indizes: $ array [n] dann mit Tie:: File wird ziemlich einfach, wenn Sie die Dokumentation lesen.
S_M Vorschlag liest die Datei in Stücke, nicht Zeile für Zeile, und sieht aus wie es sollte, obwohl die letzten Spiel scheitern könnte, wenn es nicht zwei Zeilenumbrüche am Ende der Datei. Sie müssen versuchen und sehen, oder vielleicht kann er klar, dass auf. |
![]() |
| Lesezeichen |
| Thread Tools | Suche diesen Thread |
| Anzeige-Modi | Rate this thread |
|
|