wie geht's mit grep?
heinetz
- webserver
0 Jens Holzkämper0 heinetz
0 Rolf Rost
hallo forum,
ich programmiere eine volltext-suche auf einer
php-anwendung. aus performance-gruenden wuerde ich gerne per php einen kommandozeilen-befehl auf die maschine absetzen z.b. grep. das funktioniert auch soweit ganz gut. aber noch nicht ganz so, wie ich es gerne haette:
ich haette gerne die anzahl der fundstellen im file gewusst.
das habe ich zuerstmal mit grep und der option -c versucht. sah auch erstmal richtig aus, bis ich feststellte, dass es nicht die anzahl der fundstellen wiedergegeben wurde, sondern die anzahl der zeilen, in denen der suchstring gefunden wurde.
jetzt frag ich mich (der von unix nix weiss), ob man die anforderung ueberhaupt mit grep loesen kann, oder ob dazu ein anderes tool
bemuehen soll.
von mir selbst habe ich bisher keine antwort bekommen;)
danke fuer deinen tip,
viele gruesse,
martin
Tach,
das habe ich zuerstmal mit grep und der option -c versucht. sah auch erstmal richtig aus, bis ich feststellte, dass es nicht die anzahl der fundstellen wiedergegeben wurde, sondern die anzahl der zeilen, in denen der suchstring gefunden wurde.
"grep Datei Suchstring | wc -l" sollte tun was du suchst.
mfg
Woodfighter
moin,
"grep Datei Suchstring | wc -l" sollte tun was du suchst.
klingt gut. bin neugierig: kannst du mir das kurz erlaeutern?
grep ohne parameter, pipe leitet die ausgabe nach wc (koennte wordcount sein?) mit dem parameter -l.
umgesetzt sieht das ganze bei mir so aus:
-----------------------------------------
exec ("grep _content/sites/anforderungen.php "SEB" | wc -l", $output);
-----------------------------------------
$output schmeisst ne 0 raus, die nicht definitiv stimmt. wat nu?
schoenen dank erstmal,
schoene gruesse,
martin
Tach,
"grep Datei Suchstring | wc -l" sollte tun was du suchst.
klingt gut. bin neugierig: kannst du mir das kurz erlaeutern?
mal sehen:
grep ohne parameter, pipe leitet die ausgabe nach wc (koennte wordcount sein?) mit dem parameter -l.
wc=wordcount, -l gibt die Anzahl der Zeilen einer Datei aus. grep ohne Parameter gibt alle Zeilen aus, in denen der Suchbegriff gefunden wird; die werden dann gezählt.
exec ("grep _content/sites/anforderungen.php "SEB" | wc -l", $output);
$output schmeisst ne 0 raus, die nicht definitiv stimmt. wat nu?
Das liegt daran, daß man mir nie alles glauben sollte, wenn ich es nicht per copy und Paste übernehme: Der Suchstring muß vor dem Dateinamen stehen.
mfg
Woodfighter
hello,
wc=wordcount, -l gibt die Anzahl der Zeilen einer Datei aus. grep ohne Parameter gibt alle Zeilen aus, in denen der Suchbegriff gefunden wird; die werden dann gezählt.
also: grep zeigt mir welche zeilen das suchmuster enthalten und wc -l zaehlt die zeilen einfach zusammen. klingt gut.
-----------------------------------------------
Klaus mag Liesa.
Liesa steht nicht auf Klaus.
grep "Lisa" prosa.txt ergibt
"
Klaus mag Lisa.
Lisa steht nicht auf Klaus.
"
wc -l zaehlt dann die zeilen dieser ausgabe.
--> 2, richtig (2 mal Lisa) in prosa.txt
aber:
Klaus mag Liesa, obwohl Lisa ihn nicht mag.
...ergibt eine zeile, die da gezaehlt wird und ich weiss immernoch nicht wie oft Liesa in prosa.txt vorkommt. uebrigens gibt es fuer grep die option -c, die auch die ausgabe der zeilen unterdrueckt und nur die zeilen zaehlt.
schade, schoene idee gewesen.
viele gruesse,
martin
-----------------------------------------------
scheint aber das gleiche zu machen, als wuerde man grep den parameter -c mitgeben.
exec ("grep _content/sites/anforderungen.php "SEB" | wc -l", $output);
$output schmeisst ne 0 raus, die nicht definitiv stimmt. wat nu?Das liegt daran, daß man mir nie alles glauben sollte, wenn ich es nicht per copy und Paste übernehme: Der Suchstring muß vor dem Dateinamen stehen.
mfg
Woodfighter
hi,
ich programmiere eine volltext-suche auf einer
php-anwendung. aus performance-gruenden wuerde ich gerne per php einen kommandozeilen-befehl auf die maschine absetzen z.b. grep. das funktioniert auch soweit ganz gut. aber noch nicht ganz so, wie ich es gerne haette:
Also was mich daran stören würde ist die Tatsache, dass grep
einwenig unkomfortabel ist und das Kommando alleine keine komplexen Suchbegriffe like "(foo AND bar) NOT age" ermöglicht.
Da ists schon besser mit einem Indexer zu arbeiten oder ein fertiges Modul wie z.B. Text::Query (PERL) zu verwenden; ist der zu durchsuchende Content vom HTML-Layout getrennt, ergeben sich damit interessante Möglichkeiten einer Volltextsuche ohne Index. Dazu hab ich mal einen Artikel geschrieben:
http://perlbase.xwolf.de/cgi-bin/perlbase.cgi?display=16&id=12
Rolf