¿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?

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

3
perl -ne 'if (/ "([^"] +) "$ /) {$ ua {$ 1} ++;} END {for (keys% ua) {print" $ ua {$ _} $ _ \ n "}} '\
  acceso_log
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.