Schrift
[thread]504[/thread]

Problem mit suche [Perl]

Leser: 1


<< |< 1 2 >| >> 13 Einträge, 2 Seiten
Gast Gast
 2005-06-06 11:08
#5037 #5037
Guten Morgen an alle :)

Also ich will gleich zur sache kommen, ich bin ziemlich neu in der Materie von Perl und es ist eigendlich auch meine erste Programmiersprache und ja ich kenn mich halt noch net wirklich aus und bin auch im I-net nicht fündug geworden, deswegen frage ich mal bei euch nach wenns nicht stört, also ich will aus einem Text
z.B:

5ug1
6 1010 aaaaaaa = "1234" bbbbb
6 2020 bbbbbb = "9876" cccccc
6*End
5ug2
6 1020 aaaaaa = "1234" bbbbbb
6 2030 bbbbbb = "9876" cccccc
6*End

nur den Text von 5ug1 bis 6*End ausgeben und 5ug2 weglassen, dabei kann sich die textlänge in 5ug1 und in 5ug2 ändern, sprich es können mehr oder weniger zeilen sein deswegen kann ich substr nicht verwenden und read kommt auch net in frage hab schon soviel probiert bin aber einfach net dahinter gekommen derzeit hab ich mal das 5ug1 rausgesucht also mit [if(/5ug1/)] und dann weiß ich leider net weiter theoretisch müsste er immer in die nächste zeile springen und abfragen ob das ne 6 is und falls ne 6* kommt müsste er abbrechen und den text den er ausgelesen hat in eine Datei schreiben.

Naja hoffe das das irgendwer kapiert hat was ich meine :) falls wer mehr infos braucht muss er fragen weiß nämlich nicht genau was euch helfen könnte :) na dann danke mal fürs lesen und noch nen schönen tag, bye
renee
 2005-06-06 11:16
#5038 #5038
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn der Text in einer Datei steht:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
#! /usr/bin/perl

use strict;
use warnings;

my $file = '/Pfad/zur/Datei.txt';
open(my $fh,"<$file") or die $!;
while(<$fh>){
print if(/5ug1/.../6*End/);
}
close $fh;
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/
Merlin
 2005-06-06 11:41
#5039 #5039
User since
2005-06-06
63 Artikel
BenutzerIn
[default_avatar]
Funktioniert ja soweit aber ich finde nicht das was ich suche ich muss nach einem bestimmen namen suchen also 5ug$A wobei $A in diesem fall 2 sein müsste und da findet er mir das 1. suchergebnis mit 5ug also 5ug1 und gibt mir diesen aus, somit hab ich den ersten als ausgabe und das is leider net das ziel und aja die whileschleife läuft bei mir komischweiße in einer dauerschleife :) kann man die suche vll. noch genauer machen? und kann ich das 6* auch ausgeben? bei mir wurde das nämlich weggeschnitten wahrscheinlich durch das "*"

Danke
perldoc is your answer
renee
 2005-06-06 11:50
#5040 #5040
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das hier funktioniert bei mir:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
#! /usr/bin/perl

use strict;
use warnings;

my $A = 2;
my $file = '15ug.txt';
open(my $fh,"<$file") or die $!;
while(<$fh>){
print if(/5ug$A/.../6\*End/);
}
close $fh;


15ug.txt:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
5ug1
6 1010 aaaaaaa = "1234" bbbbb
6 2020 bbbbbb = "9876" cccccc
6*End
5ug2
6 1020 aaaaaa = "1234" bbbbbb
6 2030 bbbbbb = "9876" cccccc
6*End
5ug3
6 1010 aaaaaaa = "1234" bbbbb
6 2020 bbbbbb = "9876" cccccc
6*End
5ug4
6 1020 aaaaaa = "1234" bbbbbb
6 2030 bbbbbb = "9876" cccccc
6*End


Ausgabe:
Code: (dl )
1
2
3
4
5ug2
6 1020 aaaaaa = "1234" bbbbbb
6 2030 bbbbbb = "9876" cccccc
6*End
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/
Merlin
 2005-06-06 11:59
#5041 #5041
User since
2005-06-06
63 Artikel
BenutzerIn
[default_avatar]
Funktioniert doch :) danke hatte es sowiso an ne total falschen stelle im script eingefügt :)

Danke für die schnelle hilfe,

werd gleich weiterarbeiten :)


noch einen schönen tag
M.f.G

Merlin
perldoc is your answer
Merlin
 2005-06-06 17:20
#5042 #5042
User since
2005-06-06
63 Artikel
BenutzerIn
[default_avatar]
Ich muss nochmal nerven :) hab da wieder ein problem bezüglich des auslesen eines textes, der Text steht in der Textdatei unter Ultraedit schön untereinander im Texteditor ist es aber nur eine Zeile und ich will in der vorletzten Zeile etwas auslesen, das in jeder Texdatei an der gleichen position steht, nehmen wir an:

12124124144|||131411414|||34545464||||||||
11341241251151|||23526abcdeffg||||||
||leuko||||blablablabla|||||
2424||*gesucht*||||adfj1241515531||||

bei mir nimmt er wenn ich "substr (@Eintraege[4],7,7)" eingebe nimmt er die zeile 4 nicht wenn ich aber substr "(@Eintraege[0], 345,7)" eingebe nimmt er was ich suche, (sieht so aus als würde er alles als eine zeile sehen) aber leider ändert sich in jeder Datei die zeichenanzahl wo das 2. Beispiel dann wieder nicht funktioniert, da ich in der arbeit der bin der perl lernen soll und sich sonst keiner damit wirklich jemals befasst hat kann ich leider auch keinen fragen und das internet bietet mir auch net viel da ich entweder zu dumm bin oder zu wenig geduld hab :)

Danke schon mal im vorhinaus
perldoc is your answer
renee
 2005-06-06 17:30
#5043 #5043
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du solltest mit split anstatt mit substr() arbeiten...
Code: (dl )
1
2
3
my @info = split(/\|/,$line);
print $info[0], " -> ",$info[4],"\n";
#etc...


Übrigens spricht man einzelne Arrayelemente nicht mit @array[$index] sondern mit $array[$index] an!
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/
Merlin
 2005-06-06 17:42
#5044 #5044
User since
2005-06-06
63 Artikel
BenutzerIn
[default_avatar]
Ok werde mal versuchen ob ich das irgendwie hinbekommen :)
Wie gesagt ich kenn mich noch nicht recht gut aus programmiere erst seit 2 wochen perl und das ist mein 2. programm :) also nicht zu streng sein :)

Danke
perldoc is your answer
Strat
 2005-06-06 17:46
#5045 #5045
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
wenn du noch eine einfuehrung in perl suchst: ich habe eine auf meiner HP unter Vortraege... die verwende ich auch fuer schulungen
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Merlin
 2005-06-06 17:54
#5046 #5046
User since
2005-06-06
63 Artikel
BenutzerIn
[default_avatar]
Danke werde es mir mal ansehen wird sicherlich nicht schaden hab aber schon in Buch zur Einführung gelesen (Perl 6, von Richard F. Deller) aber dort ist ein großteil des buches auch cgi und datenbanken was ich noch nicht so wirklich angesehen habe :)
aber ich danke für den link
werd gleich mal reinschauen
perldoc is your answer
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2005-06-06 11:08.