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: