Re: regex fuer zwei Begriffe mit UND Verknuepfung

From: Marc Santhoff <M.Santhoff(at)t-online.de>
Date: Sat, 11 Feb 2006 12:25:42 +0100

Am Freitag, den 10.02.2006, 18:25 +0100 schrieb Oliver Fromme:
> Marc Santhoff <M.Santhoff(at)t-online.de> wrote:
> > Wie formuliere ich einen Regulären Ausdruck für die Suche nach zwei
> > Begriffen, die beide im Dokument enthalten sein sollen?
> >
> > $grep -E "Begriff1 Begriff2"
>
> Nachdem ich die anderen Antworten gelesen habe, muß ich
> sagen, daß sie eigentlich nicht die Lösung auf Deine obige
> Frage darstellen. Die Formulierung Deiner Frage schränkt
> die Suche nämlich nicht auf den Fall ein, daß die Begriffe
> in derselben Zeile stehen müssen.

Nein, tatsächlich nicht. Hab's aber in diesem Fall nicht bemerkt, da
auch im gesuchten Dokument (nicht nur im Testfall) tatsächlich beide
Begriffe in einem Satz standen.

Aber die Forderung war schon, so zu suchen, wie man es von
Internet-Suchmaschinen gewohnt ist.

> Du möchtest also aus einer Reihe von Dokumenten diejenigen
> heraussuchen, die zwei bestimmte Begriffe enthalten, und
> zwar nicht zwangsläufig in derselben Zeile. Das geht so:
>
> grep -l Begriff1 *.txt | xargs grep -l Begriff2
>
> Das liefert die Die betreffenden Dateinamen.

Genau an sowas hatte ich gedacht. Ggf. noch mit "find" vorweg.

> Mir ist kein
> GUI-Programm bekannt, das derartiges leistet; zumindest
> ist keines per default mit einem der gängigen GUIs (KDE,
> Gnome, Windows) installiert.

Nein, dafür gibt es kein GUI. Aber auch als Konsolbefehl ist es nicht so
besonders intuitiv. Schließlich wäre es für grep kein problem, den Text
statt mit nur einem gleich mit zwei Begriffen zu vergleichen, verlängert
natürlich die Suche ... aber wie schon erwähnt, halbwegs gute GUIs für
"find" (nicht notwendigerweise grep, wie ich irrtümlich schrieb) gibt es
für meinen persönlichen Bedarf schon, s. TkDesk. Nur weil ich GUIs mag
und benutze, heißt das ja nicht, daß ich keine Konsolenbefehle lernen
will oder kann. Ich stelle mir vor, ich müßte die regelmäßigen Kopien
meiner Arbeitsdaten oder Backups, etc. alle immer in GUI klicken, da
wird man ja verrückt. ;)

> Wenn die Suchbegriffe dagegen in derselben Zeile stehen
> sollen, ist es mit awk am einfachsten:
>
> awk '/Begriff1/&&/Begriff2/' *.txt
>
> liefert die gewünschten Zeilen.

Eben das ist der Vorteil von FreeBSD, selbst wenn man solche Lösung noch
nie (seit FreeBSD 2.0) gebraucht hat, bekommt man auf der Mailingliste
eigentlich immer wirklich kompetente Hilfe. :)

Vielen Dank an alle Mitdenker,
Marc

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sat 11 Feb 2006 - 12:26:52 CET

search this site