PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mehrere Wörter greppen und individuell zählen



ThorstenHirsch
05.11.04, 09:12
Servus!

Wie kann ich denn folgendes Problem bewältigen? Ein Programm gibt mir ne ewig lange Ausgabe und ich soll jetzt zählen wie oft in der Ausgabe Hans, wie oft Franz und wie oft Kai-Uwe vorkommt. Der Knackpunkt: ich darf das Programm, das mir die ewig lange Ausgabe liefert nur 1x aufrufen.

Gruß,
Thorsten

Blackhawk
05.11.04, 09:33
seltenlaufprogramm > /tmp/programlog.txt
grep -c franz /tmp/programlog.txt
grep -c kai-uwe /tmp/programlog.txt
usw...

ThorstenHirsch
05.11.04, 10:49
Neeee, des is ja doof. Ohne temp-Datei bitte.
Das Ding soll schließlich auch Performance haben!

Hun
05.11.04, 11:26
nehm halt statt der tempdatei nen fifo

Blackhawk
05.11.04, 12:31
da bei mir /tmp ein link auf /dev/shm ist, hab ich da keine Performance-Problemen...

tictactux
05.11.04, 13:54
Der Schalter -f FILE von grep könnte die Temporärdateien
und Mehrfachaufrufe vermeiden (alle Suchbegriffe zeilenweise
aus angegebener Datei).

Allerdings zählt grep mit -c nur passende Zeilen.

Wenn der Suchbegriff öfter je Zeile vorkommt, wäre awk/perl
evtl. besser geeignet.

Gruss,
Wolfgang

ThorstenHirsch
05.11.04, 17:02
Jup, mit awk konnte ich's lösen:

langeliste.sh | egrep 'Hans|Franz|Kai-Uwe' | awk \
'BEGIN { hans=0; franz=0; kaiuwe=0} { if (\$1 \
== "Hans") ++hans; if (\$1 == "Franz") ++franz; \
if (\$1 == "Kai-Uwe") ++kaiuwe} END { print \
hans,franz,kaiuwe }'
...so, und jetzt endlich FEIERABEND!!!!

P.S.: ich hab heute natürlich noch viel mehr gemacht als den ganzen Tag über diese Zeile gegrübelt ;)