Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/01/2007, 13:44
Avatar de AleSanchez
AleSanchez
Colaborador
 
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires, Argentina
Mensajes: 3.692
Antigüedad: 20 años, 2 meses
Puntos: 47
Re: Grep: expresion regular para extraer la cadena de busqueda de una URL de Google

Antes que nada, les comento que el asunto lo solucione directamente en la consulta MySQL (ya que tengo los logs alli).
Código:
SELECT
	searchQuery,
	COUNT(searchQuery) as countSQ
FROM (
	SELECT
		@fq := SUBSTR(referer, INSTR(referer,'q=') + 2) as fq,
		@sq := SUBSTR(@fq, 1, instr(@fq, '&') -1) as sq,
		IF (@sq = '', @fq, @sq) as searchQuery
	FROM
		combined
	WHERE
		domain = '$d' and
		(referer regexp 'google' or
		referer regexp 'live.com' or
		referer regexp 'msn') and
		referer regexp 'search'
	UNION
	SELECT
		@fq := SUBSTR(referer, INSTR(referer,'p=') + 2) as fq,
		@sq := SUBSTR(@fq, 1, instr(@fq, '&') -1) as sq,
		IF (@sq = '', @fq, @sq) as searchQuery
	FROM
		combined
	WHERE
		domain = '$d' and
		referer regexp 'yahoo' and
		referer regexp 'search'
	) tableQ
GROUP BY
	searchQuery
ORDER BY
	countSQ DESC
Volviendo a Linux y Shell Scripting, Igualmente me gustaria seguir con este tema solo para aprender un poco mas de expresiones regulares en shell scripting.

Ahora que estaba leyendo en otro mensaje que publicaste, me habia olvidado de sed!!! ¿Servirá para esto?

El log es lo que muestro en el resultado, es un acrivho de texto con los referers que recibe el apache cuando algun usuario hace una busqueda en google y desde alli entra a mis webs.

Yo quiero obtener una lista de las busquedas en otro archivito de texto, que quede asi (siguiendo el ejemplo de arriba)
Código:
zona+tux
ZONATUX
repositorios+mandriva+seerofsouls
Como ves, son las cadenas que estan inmediatamente despues de "q=" en la cadena completa.

Saludos!
__________________
¡Volviendo a la programación!