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??
Named Pipes
Re: Named Pipes
inner bash hilft da 'wc', nein, das ist nix sanitaeres, sonder heisst WordCount...
ratte
ratte
Re: Named Pipes
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.
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.
Re: Named Pipes
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
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
Vielen Dank
Ich bin inzwischen selbst weiter gekommen, und danke allen Postern für ihre Antworten.
CU
W.
CU
W.