Named Pipes

Post Reply
Message
Author
Wolfgang Jaschke

Named Pipes

#1 Post by Wolfgang Jaschke »

Ich möchte aus einer Datei Zeilen herausfiltern, die gleichzeitig N Wörter enthalten.

Ganz simpel wäre das mit dem Befehl :
grep Pattern1 MyFile | grep Pattern2 | grep ... usw.
bringt mir zum Schluss eine Liste der Zeilen die alle Pattern enthalten.
(ich weis, bis hierhin gehts auch eleganter :))..)

Aber ich möchte nicht nur das Ergebnis, sondern auch eine Liste wie oft Pattern1 wie oft Pattern2 usw gefunden wurde. Und das alles ohne Zwischendateien, weil die Suchdatei sehr umfangreich ist.
Ok, lässt sich wahrscheinlich über Prozeßsubtitution und Named Pipes lösen, bloß wie??

ratte

Re: Named Pipes

#2 Post by ratte »

inner bash hilft da 'wc', nein, das ist nix sanitaeres, sonder heisst WordCount...

ratte

Jochen

Re: Named Pipes

#3 Post by Jochen »

wc? Ach nö, der zählt ja immer ganze Wörter und nix anderes...

Dein Problem ist mir noch nicht ganz klar: Suchst Du nun alle Zeilen, die Treffer für alle N regulären Ausdrücke bieten, oder nach Zeilen, die N beliebige Wörter enthalten? Das ist ein Unterschied!

Wenn Du durch die grep's Deine Treffermenge eingrenzt, hast Du in jeder übrig gebliebenen Teile mindestens einen Treffer pro verwendeten regulären Ausdruck. Kommt es jetzt auch darauf an, ob ein RA mehrmals in einer Zeile auftaucht?

So oder so, da gibt es mehrere Lösungsmöglichkeiten. Kennst Du den awk, oder perl? Die würden Dir die Arbeit leichter machen als reine Shellprogrammierung.

WolfieK

Re: Named Pipes

#4 Post by WolfieK »

der ansatz mit awk ist ok.
der grep ist effektiver mit:
grep -E '(string1)|(string2)' filename
das ganze dann pipen zum awk:
grep -E '(string1)|(string2)' filename | awk -v Var1=$string -v Var2=$string2 '.......

viel spass

greet$
Wolfie

Wolfgang Jaschke

Vielen Dank

#5 Post by Wolfgang Jaschke »

Ich bin inzwischen selbst weiter gekommen, und danke allen Postern für ihre Antworten.
CU
W.

Post Reply