
Dessglosar email cut, sed, etc
Publicado por Fer (21 intervenciones) el 30/10/2013 00:56:05
Hola, buenas,
Necesito hacer un desglosamiento y clasificacion de una lista de email para dejar al final todas sus partes delimitas por comas para cumplir con el standar csv.
Partiendo de una lista:
$ cat prueba.txt
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
En lo que se refiere al desglose deberia finalizar asi:
[email protected],miemail.com,.com
[email protected],atasca.org,.org
[email protected],ejemplo.net,.net
[email protected],pcre.es,.es
[email protected],excluida.fr,.fr
La clasificacion estaria basada en el pais a tratar, para el ejemplo digamos que es España, y el resultado final deberia ser este:
[email protected],miemail.com,.com,G
[email protected],atasca.org,.org,G
[email protected],ejemplo.net,.net,G
[email protected],pcre.es,.es,T
[email protected],excluida.fr,.fr,X
Donde la leyenda de G,T,X seria esta:
G = Dominios globales; net, org, com, info, etc
T= Dominios Territoriales; es, fr, uk, de, etc
X= Dominios que quedan excluidos porque son de otro pais que el tratado, para el caso España (notese que .fr queda excluido)
Siempore traria un unico pais a la vez.
Tengo un txt con todos los dominios globales, otro con todos los territoriales y otro con el pais que se estaria tratando. Para el caso de España contendria .es, pero para otros paises como Uk tendria mas entradas, o Usa que tiene 3, a saber .us, .gov y .mil.
Despues por lo que he leido podria leer los patrones a usar de estos archivos y en consecuencia añadir la letra de clasificacion (G,T o X) al final de cada linea
Queria presentar primero la idea global del trabajo, pero cada cosa a su tiempo.
Con lo que estoy ahora es con el desglosamiento y despues de muchas pruebas solo he llegado a conseguir esto:
$ cut -f1 prueba.txt | sed 's/$/,/'
[email protected],
[email protected],
[email protected],
[email protected],
[email protected],
a partir de aqui me atasco. Este otro intento esta cerca pero no consigo concatenarlo con lo anterior:
$ cut -f1 prueba.txt | sed 's/$/,/' | awk -F"@" '{ print $2 }'
miemail.com,
latasca.org,
ejemplo.net,
pcre.es,
excluida.fr,
y ademas preferiria no usar awk, me resulta complicado.
Se que puedo crear los archivos separados tal cual los muestro arriba y despues unirlo todo con paste, pero preferiria una solucion "de una tirada" si fuera posible.
Ademas no sabria como extraer el tipo de dominio (.es.org, etc) con awk porque con la arroba es facil ya que hay solo una, pero puntos puede haber varios.
Muchas gracias por la atencion.
Necesito hacer un desglosamiento y clasificacion de una lista de email para dejar al final todas sus partes delimitas por comas para cumplir con el standar csv.
Partiendo de una lista:
$ cat prueba.txt
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
En lo que se refiere al desglose deberia finalizar asi:
[email protected],miemail.com,.com
[email protected],atasca.org,.org
[email protected],ejemplo.net,.net
[email protected],pcre.es,.es
[email protected],excluida.fr,.fr
La clasificacion estaria basada en el pais a tratar, para el ejemplo digamos que es España, y el resultado final deberia ser este:
[email protected],miemail.com,.com,G
[email protected],atasca.org,.org,G
[email protected],ejemplo.net,.net,G
[email protected],pcre.es,.es,T
[email protected],excluida.fr,.fr,X
Donde la leyenda de G,T,X seria esta:
G = Dominios globales; net, org, com, info, etc
T= Dominios Territoriales; es, fr, uk, de, etc
X= Dominios que quedan excluidos porque son de otro pais que el tratado, para el caso España (notese que .fr queda excluido)
Siempore traria un unico pais a la vez.
Tengo un txt con todos los dominios globales, otro con todos los territoriales y otro con el pais que se estaria tratando. Para el caso de España contendria .es, pero para otros paises como Uk tendria mas entradas, o Usa que tiene 3, a saber .us, .gov y .mil.
Despues por lo que he leido podria leer los patrones a usar de estos archivos y en consecuencia añadir la letra de clasificacion (G,T o X) al final de cada linea
Queria presentar primero la idea global del trabajo, pero cada cosa a su tiempo.
Con lo que estoy ahora es con el desglosamiento y despues de muchas pruebas solo he llegado a conseguir esto:
$ cut -f1 prueba.txt | sed 's/$/,/'
[email protected],
[email protected],
[email protected],
[email protected],
[email protected],
a partir de aqui me atasco. Este otro intento esta cerca pero no consigo concatenarlo con lo anterior:
$ cut -f1 prueba.txt | sed 's/$/,/' | awk -F"@" '{ print $2 }'
miemail.com,
latasca.org,
ejemplo.net,
pcre.es,
excluida.fr,
y ademas preferiria no usar awk, me resulta complicado.
Se que puedo crear los archivos separados tal cual los muestro arriba y despues unirlo todo con paste, pero preferiria una solucion "de una tirada" si fuera posible.
Ademas no sabria como extraer el tipo de dominio (.es.org, etc) con awk porque con la arroba es facil ya que hay solo una, pero puntos puede haber varios.
Muchas gracias por la atencion.
Valora esta pregunta


0