Script zur Textsuche gesucht.... / Bash oder PHP
Liebe ListenleserIn, da meine Fähigkeiten zum Bash-Programmieren begrenzt sind poste ich mein Problem mal an die Liste. Vielleicht hat jemand eine Lösung parat, oder kann mir helfen. Ich suche ein Script - das mir aus einem Text die Passagen heraussucht, auf die ein oder mehrere Suchwörter passen. Die Länge des Textes (Kontext) davor und dahinter sollte als Argument mit übergeben werden. Gut wäre, wenn als Argument mit übergeben werden könnte, in welchem Abstand die beiden Suchwörter im TExt stehen dürfen. Und ganz toll wäre, wenn das Script auch noch ganze Sätze ausspucken würde - also von "." bis ".". also so in der Art: SUCHBEFEHL -context [AnzahlderWörterAusgabe] -abstand [Abstand der Suchwörter] -s [Suchwort / Suchwörter] Denkbar wäre eine bash oder eine PHP-Lösung... wer hat eine Idee?? Danke schon mal grüße carsten
suse-linux@arbeitswaisen.de:
Ich suche ein Script - das mir aus einem Text die Passagen heraussucht, auf die ein oder mehrere Suchwörter passen. Die Länge des Textes (Kontext) davor und dahinter sollte als Argument mit übergeben werden.
Gut wäre, wenn als Argument mit übergeben werden könnte, in welchem Abstand die beiden Suchwörter im TExt stehen dürfen.
Und ganz toll wäre, wenn das Script auch noch ganze Sätze ausspucken würde - also von "." bis ".".
also so in der Art:
SUCHBEFEHL -context [AnzahlderWörterAusgabe] -abstand [Abstand der Suchwörter] -s [Suchwort / Suchwörter]
Denkbar wäre eine bash oder eine PHP-Lösung...
wer hat eine Idee??
Ich denke, man sollte mal zuerst klären wofür das ist. Und was "Abstand" etc. bedeutet. Sollen exakte Treffer gefunden werden, oder "ähnliche". Sind nur Anfangs und Endwort gegeben, oder sollen ganze Sätze angegeben werden können? Wenn es also etwas komplizierter sein darf, muß man etwas tiefer in die Trickkiste (=Algorithmen) greifen. Das ganze hat auch relativ wenig mit der Bash zu tun. u.U, wäre Perl doch die bessere Lösung, zu mal es dort auch bereits "fix&fertig" Suchalgorithmen gibt. Vielleicht reicht ja auch ein Index-Werkzeug wie glimpse um das Problem zu Lösen. Ansonsten hier ein Zeiger: String-Matching mit dem Boyer-More-Algorithmus. Eine gute Einleitung in die Algorithmen gibt es in: "Introduction to Algorithms", T.Corman, et.al. MIT-Press Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 9204871 Fax: +49(721) 24874 juergen@informatik-vollmer.de,vollmer@cocolab.de,Juergen.Vollmer@acm.org www.informatik-vollmer.de
Am Montag, 18. November 2002 19:21 schrieb Jürgen Vollmer:
suse-linux@arbeitswaisen.de:
Ich suche ein Script - das mir aus einem Text die Passagen heraussucht, auf die ein oder mehrere Suchwörter passen. Die Länge des Textes (Kontext) davor und dahinter sollte als Argument mit übergeben werden.
Gut wäre, wenn als Argument mit übergeben werden könnte, in welchem Abstand die beiden Suchwörter im TExt stehen dürfen.
Und ganz toll wäre, wenn das Script auch noch ganze Sätze ausspucken würde - also von "." bis ".".
also so in der Art:
SUCHBEFEHL -context [AnzahlderWörterAusgabe] -abstand [Abstand der Suchwörter] -s [Suchwort / Suchwörter]
Denkbar wäre eine bash oder eine PHP-Lösung...
wer hat eine Idee??
Ich denke, man sollte mal zuerst klären wofür das ist. Und was "Abstand" etc. bedeutet. Sollen exakte Treffer gefunden werden, oder "ähnliche". Sind nur Anfangs und Endwort gegeben, oder sollen ganze Sätze angegeben werden können?
Hallo Jürgen, Danke für die Tipps... Abstand bedeutet: die beiden Suchwörter dürfen bspw. nur maximal 10 Wörter voneinander getrennt stehen. Gefunden sollten exacte Treffer (evtl. auch ähnliche, aber das ist erstmal nicht so wichtig). Und das möglichst in ganzen Sätzen...
Wenn es also etwas komplizierter sein darf, muß man etwas tiefer in die Trickkiste (=Algorithmen) greifen. Das ganze hat auch relativ wenig mit der Bash zu tun. u.U, wäre Perl doch die bessere Lösung, zu mal es dort auch bereits "fix&fertig" Suchalgorithmen gibt.
ja, aber ich kann kein Perl ;-( - und dachte eher an etwas mit grep etc. Da bin ich ja jetzt auch auf der Spur.
Vielleicht reicht ja auch ein Index-Werkzeug wie glimpse um das Problem zu Lösen. Ansonsten hier ein Zeiger: String-Matching mit dem Boyer-More-Algorithmus. Eine gute Einleitung in die Algorithmen gibt es in: "Introduction to Algorithms", T.Corman, et.al. MIT-Press
Tja, da ist mein Wissen zu begrenzt. Und die Zeit, mich da einzuarbeiten habe ich leider nicht... Danke in jedem Fall grüße carsten
Moin Carsten Carsten Ungewitter wrote:
Liebe ListenleserIn,
da meine Fähigkeiten zum Bash-Programmieren begrenzt sind poste ich mein Problem mal an die Liste. Vielleicht hat jemand eine Lösung parat, oder kann mir helfen.
Ich suche ein Script - das mir aus einem Text die Passagen heraussucht, auf die ein oder mehrere Suchwörter passen. Die Länge des Textes (Kontext) davor und dahinter sollte als Argument mit übergeben werden.
Wenn mich nicht alles täuscht, kann ich mit grep nur einzelne Wörter finden :-(
Gut wäre, wenn als Argument mit übergeben werden könnte, in welchem Abstand die beiden Suchwörter im TExt stehen dürfen.
Würde ich mit einer Matrix machen, die mit awk eine Textdatei durchackert. (Wort[-3], Wort[-2], Wort[-1], Wort[akt], Wort[+1], ...) Wenn Wort[akt]="Suchwort" ist, wird die Gruppe ausgegeben.
Und ganz toll wäre, wenn das Script auch noch ganze Sätze ausspucken würde - also von "." bis ".".
Ebenso mit der Matrix. Wenn Wort[0]="." dann Schleife bis Wort[x]=. Satz ausgeben
also so in der Art:
SUCHBEFEHL -context [AnzahlderWörterAusgabe] -abstand [Abstand der Suchwörter] -s [Suchwort / Suchwörter]
Ich weiß aber nicht genau wie es mit variblen Matrizen geht. Gruß, Dirk
* Carsten Ungewitter schrieb am 18.Nov.2002:
Ich suche ein Script - das mir aus einem Text die Passagen heraussucht, auf die ein oder mehrere Suchwörter passen. Die Länge des Textes (Kontext) davor und dahinter sollte als Argument mit übergeben werden.
Das macht schon grep. Siehe Options -A, -B und -C
Gut wäre, wenn als Argument mit übergeben werden könnte, in welchem Abstand die beiden Suchwörter im TExt stehen dürfen.
Wie meinen?
Und ganz toll wäre, wenn das Script auch noch ganze Sätze ausspucken würde - also von "." bis ".".
Hmm. Bernd -- Bitte die Etikette beachten: http://www.suse-etikette.de.vu/etikette.html Bitte Realnamen angeben, kein Vollquoting, kein Html, PGP oder Visitenkarten benutzen. Signatur mit "-- " abtrennen, bei Antworten "Re: " voranstellen, sonst nichts. |Zufallssignatur 4
Hallo, On Mon, 18 Nov 2002, Carsten Ungewitter wrote:
also so in der Art:
SUCHBEFEHL -context [AnzahlderWörterAusgabe] -abstand [Abstand der Suchwörter] -s [Suchwort / Suchwörter]
man agrep, man sgrep Ob das reicht haengt von der genauen "Frage" ab... Falls das nicht reicht musst du vermutlich "per Hand" mit sed/awk/perl was basteln... Ein Beispiel noch fuer 'agrep': agrep -t -d'^%$' -e 'Asimov,Clarke' ~/signatures gibt mir alle sigs aus, in denen einer der beiden Namen vorkommt ;) -dnh -- Der Bart dieses Textes reicht mittlerweile von Australien bis nach China. Mit einem kleinen Umweg um eine Sonne. Nein, die befindet sich nicht in dieser Galaxie. -- Marc 'HE' Brockschmidt in dasr
Am Dienstag, 19. November 2002 03:04 schrieb David Haller:
On Mon, 18 Nov 2002, Carsten Ungewitter wrote:
also so in der Art:
SUCHBEFEHL -context [AnzahlderWörterAusgabe] -abstand [Abstand der Suchwörter] -s [Suchwort / Suchwörter]
man agrep, man sgrep
Ob das reicht haengt von der genauen "Frage" ab...
Ich komme auf jeden Fall mal weiter. Nicht ganz ideal. Aber ich glaube es geht. Vielen Dank. Auf sgrep war ich nicht gekommen.
Falls das nicht reicht musst du vermutlich "per Hand" mit sed/awk/perl was basteln...
ja... und das wird dann (für mich zu) kompliziert grüße carsten -- =========================================================== Carsten Ungewitter Hansastraße 10 - 01097 Dresden - tel-0351-810 60 63 PGP für die innere Sicherheit! Schlüssel auf Anfrage oder: unter www.arbeitswaisen.de/pgp/ ===========================================================
Am Montag, 18. November 2002 17:44 schrieb Carsten Ungewitter:
Liebe ListenleserIn,
da meine Fähigkeiten zum Bash-Programmieren begrenzt sind poste ich mein Problem mal an die Liste. Vielleicht hat jemand eine Lösung parat, oder kann mir helfen.
Danke für die vielen Tipps, die ihr mir geschickt habt... (auch per PM). Ich bin zumindest schon einen Schritt weiter... Im Moment versuche ich es mit sgrep. Suche ganze Sätze (jeweils den Text zwischen zwei Punkten) und innerhalb dieser nach dem Stichwort. Leider ist die Größe des Textabschnittes innerhalb der man nach einem oder mehreren Stichwörtern suchen kann (ein Satz) damit noch nicht variabel einstellbar. Auch wird natürlich jeder Punkt interpretiert. (Also auch nach Abkürzungen etc. - aber da läßt sich wohl schwer was drehen...)
Ich suche ein Script - das mir aus einem Text die Passagen heraussucht, auf die ein oder mehrere Suchwörter passen. Die Länge des Textes (Kontext) davor und dahinter sollte als Argument mit übergeben werden.
Gut wäre, wenn als Argument mit übergeben werden könnte, in welchem Abstand die beiden Suchwörter im TExt stehen dürfen.
DAs funktioniert mit sgrep eben noch nicht so richtig. Gut, man kann eben ein, zwei oder mehrere Sätze nehmen. Das ginge auch...
Und ganz toll wäre, wenn das Script auch noch ganze Sätze ausspucken würde - also von "." bis ".".
Das klappt (s.o.) bis auf die Probleme mit den Abkürzungen...)
also so in der Art:
SUCHBEFEHL -context [AnzahlderWörterAusgabe] -abstand [Abstand der Suchwörter] -s [Suchwort / Suchwörter]
Im Moment scheitere ich noch daran, wie ich den Output von sgrep in einzelne Fundstellen übersetzen kann. nach Aufruf des Kommandos wäre es klasse, wenn jede einzelne Fundstelle in einer Variable landen würde. hat da noch jemand einen schnellen Tip? grüße carsten -- =========================================================== Carsten Ungewitter Hansastraße 10 - 01097 Dresden - tel-0351-810 60 63 PGP für die innere Sicherheit! Schlüssel auf Anfrage oder: unter www.arbeitswaisen.de/pgp/ ===========================================================
participants (5)
-
B.Brodesser@t-online.de
-
Carsten Ungewitter
-
David Haller
-
Dirk Gerlach
-
Jürgen Vollmer