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

Re: [Bash] Detectar correo en una línea



On Thu, Feb 16, 2006 at 06:15:15PM +0100, Iñaki wrote:
> Hola, estoy mirando unos manuales sencillitos de sed con ejemplos y demás pues 
> tengo que hacer un script que lea un correo y se quede exclusivamente con la 
> dirección de correo del From limpia (sin <>, sin comillas, sin nada, sólo 
> usuario@dominio.com).
> 

Olá

> 
> Mi script de momento hace esto:
> 
> ----------------------------------------------------------------
> #!/bin/bash 
> 
> # Almacenamos en $linea_from toda la línea del "From: ".
> linea_from=$(formail -X "From:" < correo.txt)
> 
> # $linea_from puede ser de los siguientes tipos:
> # From: "Leandro Gao" <leandrogao@dominio.com>
> # From: =?iso-8859-15?q?leandro= <leandrogao@dominio.com>
> # From: leandrogao@dominio.com
> 
> from=comando_quedarse_sólo_con_campo_email   <--esto me falta
> 
> # Limpiamos los signos <> que pueden aparecer en los extremos del correo:
> from=$(echo $from  | sed -e 's/[<>]//g')
> ----------------------------------------------------------------------
> 
> Como veis  me falta poder quedarme sólo con el campo que tiene una arroba, esa 
> es la condición. Desgraciadamente no encuentro con "sed" el modo de 
> seleccionar un campo de una línea. ¿Sería más apropiado otro comando? ¿awk?
> 
> Agradezco cualquier ayuda. Estoy aprendiendo un poco más de Bash (que lo tenía 
> muy olvidado) ya que estos días me hace mucha falta.


 Espero que te sirva, lo he probado y funciona.. pero quien sabe :P


	# si la linea contiene "<" grep devuelve '0' , por tanto
	# verdadero. Entonces, con el primer `cut' se queda con todo a
	# la derecha de "<", y el segundo `cut' con todo a izquierda
	# de ">". 
	#
	# si grep devuelve otro valor distinto a '0', `cut' se queda
	# con lo que está a la derecha de ":"

	if [[ `echo $linea_from | grep "<"` ]] ; then
	    from="`echo $linea_from | cut -d"<" -f2 | cut -d">" -f1`"
	else
	    from="`echo $linea_from | cut -d":" -f2`"
	fi


Xau y que la fuerza sea contigo

PD: con awk, seguramente sea más elegante..

> 
> Gracias y un saludo a todos.
> 
> 

-- 
Porqué loitar e matar, se podes amar e sonhar

/"\
\ /  CAMPANHA DA FITA ASCII - CONTRA MAIL HTML
 X   ASCII RIBBON CAMPAIGN - AGAINST HTML MAIL
/ \



Reply to: