Schrift
[thread]8269[/thread]

nur bestimmte worte zulassen: durch grep zur loesung aber wie? (Seite 2)

Leser: 2


<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten
sabrina
 2006-08-25 16:28
#69232 #69232
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
@Crian
Code: (dl )
push @new, $_ if /BRIN|SAGEF403/; 

funzt nicht kommen nur was wenn ich das print weglasse aber dann kommt das gleiche wie ohne dieses push
also keine aenderung :(
liegt es vielleicht an dem alten code habe hier mal mehr vom code:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
while( defined (my $line = <FH>) ) 
{        
 chomp $line;                            
 push my @new, $_ if /\bBRIN|SAGEF403\b/;
 my @array = (split(/[\t\s\\]/,$line))[0..($columns1)];
  foreach (@array) {
     s/^\s+/;/g;                      
     s/\s+$/;/g;                        
 } # foreach
 push(@data,[@array]);
} # while
 print "new: @new\n";
close (FH);

hab auch schon beide push zusammen geschrieben, keine aenderung.
@GwenDragon
hab + (kommt min 1mal bis oefter vor)
ersetzt mit (\b bla \b)ersetzt dann kommt nur bla und nicht blabla stimmts? danke haette es nicht gemerkt
sabrina
 2006-08-25 16:54
#69233 #69233
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
ich habs ich darf nicht ine ine while schleife schreiben weil ich mehrere zeilen einlesen will stimmts?
Crian
 2006-08-25 16:58
#69234 #69234
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Das geht natürlich nicht, wenn du nur eine Zeile meines Codes einbaust.... und die Whileschleife unverändert lässt. In deinem Fall musst du $line statt $_ pushen. Ich bin nur kein Fan von unnötig aufgeblähtem Code, deshalb benutz ich sehr gern $_, aber das ist vermutlich Geschmackssache.

Zu /\bBRIN|SAGEF403\b/ musst du wissen, dass das Oder im regulären Ausdruck gierig ist. das heißt es wird nun nach \bBRIN oder nach SAGEF403\b gesucht. Lösung1: /\bBRIN\b|\bSAGEF403\b/, Lösung 2: /\b(?:BRIN|SAGEF403)\b/.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
sabrina
 2006-08-25 17:01
#69235 #69235
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
hab nen text aus ner internet seite kopiert, versteh ihn nur nicht ganz
Code: (dl )
1
2
3
$/ = "";
while (<>) { # liest einen Absatz keine, Zeile
# $_ enthält den gesamten Absatz und nicht nur eine Zeile }

aber wie genau wede ich das an ???
hab schon probiert $/ = ""; einfach einsetzten und rest stehen zu lassen geht aber nicht
lg sabrina
Crian
 2006-08-25 17:03
#69236 #69236
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Vermutlich ist das folgende das, was du willst *rat*

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
while (defined (my $line = <FH>)) {
chomp $line;
my @array = (split /[\t\s\\]/, $line)[0 .. $columns1];
for (@array) {
s/^\s+/;/g;
s/\s+$/;/g;
}
push @data, [@array] if $line =~ /\b(?:BRIN|SAGEF403)\b/;
}

print "nur die gewollten:\n";
print "@$_\n" for @data;

close FH or warn $!;
\n\n

<!--EDIT|Crian|1156511387-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Crian
 2006-08-25 17:05
#69237 #69237
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
[quote=sabrina,25.08.2006, 15:01]hab nen text aus ner internet seite kopiert, versteh ihn nur nicht ganz
Code: (dl )
1
2
3
$/ = "";
while (<>) { # liest einen Absatz keine, Zeile
# $_ enthält den gesamten Absatz und nicht nur eine Zeile }

aber wie genau wede ich das an ???
hab schon probiert $/ = ""; einfach einsetzten und rest stehen zu lassen geht aber nicht[/quote]
Damit verändert man die Definition dessen, was man unter einer Zeile versteht. Ich glaub nicht, dass du das hier brauchst.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
sabrina
 2006-08-25 17:13
#69238 #69238
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
meinst du so in etwa :
Code: (dl )
 @array = $line =~ /\b(?:BRIN|SAGEF403)\b/;
er meckert am print hab es schon unbennant in "print $line" aber es kommt nichts hab ich es falsch eingesetzt?
lg sabrina
sabrina
 2006-08-25 17:24
#69239 #69239
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
@ Crian
danke du hast genau richtig geraten!!hab nur die prints weggelassen weil sonst meine split nicht mehr wirkt!
kann ich jetzt immer so vorgehen?
danke
lg sabrina schoenes wochenende!!
Crian
 2006-08-25 17:29
#69240 #69240
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Oh gut geraten :-) *freu*

Ob du immer so vorgehen kannst hängt natürlich stark davon ab, was du willst :-)


Ebenfalls schönes Wochenende wünsch ich.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
sabrina
 2006-08-25 17:36
#69241 #69241
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
hab mal ne kleine frage kann ich die weggeworfenen daten eigendlich irgendwie auffangen in nem array?
lg sabrina
<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten



View all threads created 2006-08-25 14:49.