¿Cómo extraería las cadenas de agente de usuario de un archivo de registro?

12

Actualmente estoy ejecutando un comando como este, para obtener el contenido más solicitado:

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

Ahora quiero ver las cadenas de agente de usuario, pero el problema es que incluyen varios espacios. Aquí hay una línea típica de archivo de registro. La UA es la última sección delimitada por comillas:

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"

¿Existe una herramienta mejor que awk para esto?

Cabra descontento
fuente

Respuestas:

19

Si ese formato es consistente y el campo está realmente entre comillas dobles, puede usar awk o cortar "como delimitador de campo:

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

o:

cut -d\" -f 6
Caleb
fuente
3
perl -ne 'if (/ "([^"] +) "$ /) {$ ua {$ 1} ++;} END {for (keys% ua) {print" $ ua {$ _} $ _ \ n "}} '\
  acceso_log
RedGrittyBrick
fuente