Schrift
[thread]9052[/thread]

Suchen von Unten nach Oben: Suchen von UNTEN nach OBEN



<< |< 1 2 3 4 ... 6 >| >> 58 Einträge, 6 Seiten
yasukatakaya
 2007-05-31 11:57
#77090 #77090
User since
2007-05-31
68 Artikel
BenutzerIn
[default_avatar]
Hallo,
kann mir jemand sagen, ob man mit Perl auch von unten nach oben eine Datei durchsuchen kann, denn ich will z.B. aus diesen Daten (siehe unten), die in einer bestimmten Datei gespeichert sind, den Text (auch Sonderzeichen, Ziffern enthalten) zwischen den letzten PASS und den FAIL!
Geht es, das ich von unten suche und einfach von FAIL bis zum ersten PASS alles rausfiltere?

12.12.06 PASS
ölaksjfdöljaf
13.12.06 PASS
asälöjaöslkf1
14.12.06 FAIL

GRUSS
vayu
 2007-05-31 12:32
#77091 #77091
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
klar liess es in ein array ein und gehe von hinten nach vorne :)

Code: (dl )
1
2
3
4
my @file = <FILE>;
foreach($#file .. 0) {
#do something with $file[$_];
}


oder

Code: (dl )
1
2
3
4
my @file = reverse(<FILE>);
foreach(@file) {
#do something with $_;
}
\n\n

<!--EDIT|vayu|1180600415-->
pq
 2007-05-31 12:41
#77092 #77092
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=vayu,31.05.2007, 10:32]
Code: (dl )
foreach($#file .. 0) {
[/quote]
nur dass das nicht geht...
Code: (dl )
foreach(reverse 0 .. $#file) {
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
yasukatakaya
 2007-05-31 13:00
#77093 #77093
User since
2007-05-31
68 Artikel
BenutzerIn
[default_avatar]
Hallo,
danke für die schnelle Antwort, aber irgendwie kriege ich es nicht gebacken, dieses in mein Code einzufügen?!

So sieht mein Kopfprog aus:

#~~~ Datei einlesen und TXT-Datei erzeugen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

open ($INPUT,"<$quelle") or die "konnte $ziel nicht oeffnen,$!\n";
undef $/;

open (OUTPUT,">$ziel.txt") or die "konnte $ziel nicht oeffnen,$!\n";
$_ = <$INPUT>;
close ($INPUT);

#~~~ Ende ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Nun versuche ich euren Tip zu implementieren:

@file = <$INPUT>;
foreach($#file .. 0)
{
#hier suche ich dann in der gleichen DATEI, die nun umgedreht
#wurde??????
#also z.B.
($fehler) = /(.*?)FAIL/gsm; #ODER geht das nicht so??
}
Sucher
 2007-05-31 13:02
#77094 #77094
User since
2007-03-26
47 Artikel
BenutzerIn
[default_avatar]
Hallo,

wenn die Datei groß ist, bietet sich auch CPAN:File::ReadBackwards an.



Grüße,
vayu
 2007-05-31 15:51
#77095 #77095
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
[quote=pq,31.05.2007, 10:41][quote=vayu,31.05.2007, 10:32]
Code: (dl )
foreach($#file .. 0) {
[/quote]
nur dass das nicht geht...
Code: (dl )
foreach(reverse 0 .. $#file) {
[/quote]
upsi :0
PerlProfi
 2007-06-01 17:31
#77096 #77096
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
@yasukatakaya, du hast es noch falsch mit einbebaut.
Nachdem du die Datei geöffnet hast, musst du ihren Inhalt in ein Array einlesen und dann von hinten nach vorne durch iterieren.

Also so:
Code: (dl )
1
2
3
4
5
6
7
8
open ($INPUT,"<$quelle") or die "konnte $ziel nicht oeffnen,$!\n";
my @content = <$INPUT>;
close($INPUT);

for my$i (reverse 0..$#content) {
# mach was mit $content[$i]
# die letzte zeile kriegst du hier zuerst
}


MfG
yasukatakaya
 2007-06-04 10:41
#77097 #77097
User since
2007-05-31
68 Artikel
BenutzerIn
[default_avatar]
Hallo Leute,
irgendwie klappt es nicht, da die Datei komplett gedreht wird, d.h.
aus

1: PERL1
2: Perl2

wird

2:2lreP
1:1LREP

wie soll ich das denn in meiner Ausgabedatei lesen können??????
renee
 2007-06-04 10:57
#77098 #77098
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wie sieht Dein Code aus? Wie soll dann das Ergebnis aussehen?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2007-06-04 11:37
#77099 #77099
Ich würd wohl der Einfachheit halber ein `tac` zu Hilfe nehmen ...
<< |< 1 2 3 4 ... 6 >| >> 58 Einträge, 6 Seiten



View all threads created 2007-05-31 11:57.