linux-l: perl und schnelle Suche
Oliver Bandel
oliver at first.in-berlin.de
Fr Jun 15 22:07:57 CEST 2001
On Fri, 15 Jun 2001, Ulrich Wiederhold wrote:
> Hallo,
> mein Problem ist, daß ich nach einem String in einer Datei suchen muß,
> wobei Groß- und Kleinschreibung keine Rolle spielen soll.
>
> Bsp.:
> dies ist filename 1
> dies iSt_filname 2
> dieS_Ist` filename 3
>
>
> suche nach "dies ist" soll alle 3 Einträge zurückgeben, auch die Suche
> nach "ilNaMe" soll erfolgreich sein.
##########################################################
#!/usr/bin/perl -w
use strict;
my $text; # Der zu durchsuchende Text
# verschiedene Suchstrings
# ------------------------
my $string1 = "dies ist filename 1";
my $string2 = "dies iSt_filname 2";
my $string3 = "dieS_Ist` filename 3";
print "\nSuchstrings (nach entfernen von Space und Underscore):\n";
print "------------------------------------------------------\n";
foreach my $str ($string1, $string2, $string3)
{
$str =~ tr/ _//d;
print "=> $str\n";
}
print "\nErgebnis:\n";
print "---------\n";
while(<>)
{
$text = $_; # backup
$text =~ tr/ _//d; # entfernen von space und underscore
print $_ if $text =~ /$string1/i;
print $_ if $text =~ /$string2/i;
print $_ if $text =~ /$string3/i;
}
__END__
##########################################################
Das ist das Grundprinzip.
Alles weiter selnst anpassen.
Ciao,
Oliver
Mehr Informationen über die Mailingliste linux-l