Come estrarre le stringhe dell'agente utente da un file di registro?


12

Attualmente sto eseguendo un comando come questo, per ottenere il contenuto più richiesto:

grep "17\/Jul\/2011" other_vhosts_access.log | awk '{print $8}' | sort | uniq -c | sort -nr

Voglio ora vedere le stringhe dell'agente utente, ma il problema è che includono diversi spazi. Ecco una tipica riga del file di registro. UA è l'ultima sezione delimitata da virgolette:

example.com:80 [ip] - - [17/Jul/2011:23:59:59 +0100] "GET [url] HTTP/1.1" 200 6449 "[referer]" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30"

Esiste uno strumento migliore di Awk per questo?

Risposte:


19

Se quel formato è coerente e il campo è davvero racchiuso tra virgolette doppie puoi usare awk o tagliare "come delimitatore di campo:

awk -F\" '{print $6}'

o:

cut -d\" -f 6

3
perl -ne 'if (/ "([^"] +) "$ /) {$ ua {$ 1} ++;} END {for (keys% ua) {print" $ ua {$ _} $ _ \ n "}} '\
  access_log
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.