Thread Benutzerdefinierte Suche in Dateien
(2 answers)
Opened by sman at 2011-05-04 13:42
Hallo,
ich habe einen Haufen von Textdateien und ein Interface zur Eingabe eines Suchbegriffs. Ich möchte dass der Benutzer nutzen kann:
Gibt es eine elgante Möglichkeit oder ein fertiges Modul, mit dem das geht? Meine Version bisher scheint mir etwas Holzhammermäßig, sie parst sicherlich nicht jede verschachtelte Eingabe richtig und erzeugt einen String mit dem kompletten Dateiinhalt und durchsucht diesen mit //s: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 my $q = 'foo and not (bar or beer)'; #user input $q =~ s/(^|[^\\])\//$1\\\//g; #escape slashes my $searchexpr = join ' ', map {s/\/(and|or|not)\/si/$1/gi;$_} map {s/([^\(\)]+)/\/$1\/si/g;$_} split /\s+/, $q; $searchexpr =~ s/\/si (not )?\//\/si and $1\//g; # $searchexpr now is: /foo/si and not (/bar/si or /beer/si) my $found = 0; foreach my $d (@files) { open F, $d; my @f = <F>; $_ = join '', @f; $found++ if eval $searchexpr; close F; } print 'The expression was true in '.$found.' files'; Last edited: 2011-05-04 13:43:59 +0200 (CEST) |