Hi Rolf,
grep user access_log | wc -l
daß Du die pipe sparen und "grep -c user access_log" schreiben könntest,
weißt Du?
Deine Methode wird nicht funktionieren - Du wirst eine unbestimmte,
aber zu hohe Zahl bekommen (weil das "grep" auch in den übrigen Spalten
matchen kann, beispielsweise in den URLs oder den UserAgents oder ...).
Außerdem ist es natürlich ineffizient, für jeden Benutzer das komplette access_log zu verarbeiten. Schlimmer noch: Woher nimmst Du die Liste der Benutzernamen?
Aber die Idee an sich ist so schlecht nicht (CFL vorausgesetzt) - was
fehlt, ist nur die korrekte Umsetzung. Die könnte etwa so aussehen:
cut -d' ' -f3 access_log | sort | uniq -c | sort -k1n
oder langsam zum Mitschreiben:
1. Schneide mit "cut" das 3. Feld aus dem access_log heraus, wobei ' ' als Feldbegrenzer dient (ergibt Zeilen mit einer Spalte, nämlich dem Benutzernamen)
2. Sortiere diese Werte (als Strings), ergibt Zeilen mit einer Spalte.
3. Fasse in der nun sortierten Liste aufeinanderfolgende Zeilen zusammen und ersetze sie durch Anzahl und Wert - das ergibt Zeilen mit zwei Spalten.
4. Sortiere diese Liste nach der ersten Spalte numerisch.
Es gab auch mal Zeiten ohne Perl ... aber schon mit UNIX. ;-)
Viele Grüße
Michael