Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/01/2007, 16:51
Avatar de AleSanchez
AleSanchez
Colaborador
 
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires, Argentina
Mensajes: 3.692
Antigüedad: 19 años, 8 meses
Puntos: 47
Grep: expresion regular para extraer la cadena de busqueda de una URL de Google

Hola a todos.
Tengo el extracto de un log de un servidor apache, que contiene las cadenas de los referers de los accesos, de los cuales quiero extraer las cadenas de busqueda de google.

Quiero hacerlo con grep y expresiones regulares porque me agarró capricho por las regex.
Nota: Lo pregunto desde el enfoque de bash scripting para que no quede off topic. Luego voy a trasladar la expresion regular a un PHP.

Hasta ahora tengo esto:

Código:
cat access_log | grep --color -e "[\?|&]q=.*&"
Lo que me devuelve, por ejemplo:
Código:
http://www.google.com.ar/search?hl=es&q=zona+tux&btnG=B%C3%BAsqueda+en+Google&meta=
http://www.google.es/search?sourceid=navclient-ff&ie=UTF-8&rls=GGGL,GGGL:2006-45,GGGL:es&q=ZONATUX
http://www.google.cl/search?hl=es&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=repositorios+mandriva+seerofsouls&spell=1
Ahora, no puedo lograr que la busqueda llegue hasta el siguiente simbolo "&", como ven llega hasta el anterior a "meta".
En PHP me pasa lo mismo.

¿Alguien con alguna idea?
PD: Ya probe decodificando la URL de los caracteres con '%' pero pasa lo mismo con algunas urls...
Saludos!!!
__________________
¡Volviendo a la programación!