Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

grep: mehrere Wörter pro Zeile

329 views
Skip to first unread message

Carsten Grohmann

unread,
Dec 1, 2000, 3:00:00 AM12/1/00
to
Hi!


Ich suche eine Möglichkeit einfacher als mit grep (grep wort1 | grep
wort2 |....) mehrere Wörter pro Zeile in einer Textdatei zu suchen. Ist
so was
mit grep möglich? Mein primitives Englisch hat mir auf der Man-Page
nicht weitergeholfen.

Danke für die Hinweise

Carsten

Christopher Eltschka

unread,
Dec 1, 2000, 3:00:00 AM12/1/00
to
Carsten Grohmann wrote:
>
> Hi!
>
> Ich suche eine Möglichkeit einfacher als mit grep (grep wort1 | grep
> wort2 |....) mehrere Wörter pro Zeile in einer Textdatei zu suchen. Ist
> so was
> mit grep möglich? Mein primitives Englisch hat mir auf der Man-Page
> nicht weitergeholfen.

Mit grep wuesste ich keinen Weg, aber:

sed '/wort1/!d;/wort2/!d;/wort3/!d'

sollte das Gewuenschte ergeben.

Andreas Kretschmer

unread,
Dec 1, 2000, 3:00:00 AM12/1/00
to
Carsten Grohmann <f.bal...@t-online.de> wrote:
> Hi!


> Ich suche eine Möglichkeit einfacher als mit grep (grep wort1 | grep
> wort2 |....) mehrere Wörter pro Zeile in einer Textdatei zu suchen. Ist

ja, grep verwendet reguläre Ausdrücke. Das hier zu erläutern würde den
Rahmen wohl etwas sprengen. Aber wenn Du Dich damit beschäftigen willst,
so besorge Dir einfach ein Buch zu Perl oder awk oder sed oder anderen
UNIX-Tolls bzw. Sprachen, die auch Regex verwenden. Es gibt auch
spezielle Bücher dazu.

eier aber mal ein beispiel:
kretschmer@kaufbach:~ > grep '^O.*duschen' Sig_Archiv.txt
OjE Nutzer sind wie Leute, die glauben nur gelegentlich duschen zu
kretschmer@kaufbach:~ >

Damit durchsuche ich nach folgenden Bedingungen:
^ Zeilenanfang
O.* Zeichen 'O', gefolgt von beliebig vielen beliebiger Zeichen
dusch das muß mit in der Zeile stehen.

Das ganze in Hochkommas eingeschlossen, gefolgt vom Dateinamen.

Sich mit Regex zu beschäftigen ist auch bei Verwendung von Editoren
(vim) überausnützlich, die Lernzeit dafür macht sich schnell bezahlt.

Ach ja, und hier das ganze Zitat, um obigem einen Sinn zu geben:

OjE Nutzer sind wie Leute, die glauben nur gelegentlich duschen zu
müssen und sich dann wundern, warum andere die Nase rümpfen. OjE ist
(leider) die Geißel des Usenet. :-(
--> Frederick Page in de.comm.software.newsreader

Andreas
--
Diese Message wurde erstellt mit freundlicher Unterstützung eines frei-
laufenden Pinguins aus artgerechter Freilandhaltung. Er ist garantiert
frei von Micro$oft'schen Viren. (#97922 http://counter.li.org)
Was, sie wissen nicht, wo Kaufbach ist? : N 51.05082°, E 13.56889° ;-)

Lars Klemstein

unread,
Dec 1, 2000, 3:00:00 AM12/1/00
to
Carsten Grohmann wrote:
>
> Hi!
>
> Ich suche eine Möglichkeit einfacher als mit grep (grep wort1 | grep
> wort2 |....) mehrere Wörter pro Zeile in einer Textdatei zu suchen. Ist
> so was
> mit grep möglich? Mein primitives Englisch hat mir auf der Man-Page
> nicht weitergeholfen.

awk '/wort1/ && /wort2/ && /wort3/' datei


Gruß,

Lars

Lars Klemstein

unread,
Dec 1, 2000, 3:00:00 AM12/1/00
to

und wenn die Reihenfolge bekannt ist:

grep "^.*wort1.*wort2.*wort3.*$" datei


Noch ´n Gruß,

Lars

Peter Heckert

unread,
Dec 2, 2000, 3:00:00 AM12/2/00
to
Carsten Grohmann wrote:

> Hi!
>
>
> Ich suche eine Möglichkeit einfacher als mit grep (grep wort1 | grep
> wort2 |....) mehrere Wörter pro Zeile in einer Textdatei zu suchen. Ist
> so was
> mit grep möglich? Mein primitives Englisch hat mir auf der Man-Page
> nicht weitergeholfen.
>

> Danke für die Hinweise
>
> Carsten

grep '\<word1\>.*\<word2\>.*\<word3\>' testfile
word1 word2 word3 word4

\< steht für den Wortanfang, \> für das Ende,der Wortzwischenraum wird
mit .* erfasst.

Es gibt auch eine deutsche manpage zu grep, also:
man grep, man egrep

HTH

Peter


0 new messages