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
Mit grep wuesste ich keinen Weg, aber:
sed '/wort1/!d;/wort2/!d;/wort3/!d'
sollte das Gewuenschte ergeben.
> 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° ;-)
awk '/wort1/ && /wort2/ && /wort3/' datei
Gruß,
Lars
und wenn die Reihenfolge bekannt ist:
grep "^.*wort1.*wort2.*wort3.*$" datei
Noch ´n Gruß,
Lars
> 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