[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Duda de Perl->regexp



Hola listeros,

Ando muy entretenida ;-) parseando unos bonitos logs ;-) y tengo un
problema que seguro que es la tontería más grande del mundo.

Tengo una expresión regular y necesito que haga un poco más:

# Abro un archivo
while (chomp($id = <FTAG>)){
	# Abro otro archivo
	while (chop($line = <FAUTH>)){
		# Esto me funciona, pero no muy bien
		$line =~ /.*?\|.*?\|.*?\|.*?\|.*?\|.*?\|(.*?.)\|.*?/ ;
		$encontrado  = $+ ;
		
		# Esto es lo que necesito que me encuentre:
		# La línea debe empezar por el contenido de la variable $id.
		$line = ~/^\$id\|.*?\|.*?\|.*?\|.*?\|.*?\|(.*?.)\|.*/;
		#####################################################
		#         ~~~~~ Cómo escribo esto????
		#####################################################
		$encontrado = $+ ;
		
		if($encontrado){
		       print $encontrado, "\n";
		}
	}
}

La línea típica de logs sería así:
4a10a003-f2da63e8c3-0|lxrhgpp04|2003-01-20 07:01:06,372|AUTH |[Thread-8]|1|AplicaciónCRC|1|351|1|0|0|0||
Abstrayendo:

	$id|host|fecha|petición|algo|algo|$encontrado|más_cosas_que_no_me_interesan

Sólo quiero saber el campo $encontrado de la línea que empieza por $id.

Estoy empezando tanto con Perl como con las regexp y me cuesta un poco.
Gracias por vuestro tiempo :-)



-- 
.''`.	 Girl, you gotta change your crazy ways, you hear me?
: :' :					Crazy  by  Aerosmith      
`. `'	Proudly running Debian GNU/Linux (Sid + 2.4.20 + Ext3)
  `-	www.amayita.com  www.malapecora.com  www.chicasduras.com



Reply to: