[CentOS-es] OT - Necesito algo de bash fu

Carlos Restrepo restrcarlos en gmail.com
Sab Dic 28 02:42:23 UTC 2013


El 24 de diciembre de 2013, 17:52, Diego Sanchez <diegors en gmail.com>escribió:

> Ok..
> Encontre una manera, no muy optima, pero funciona al menos, para ir
> trabajando sobre el tema.
>
> Cómo lo estoy parcheando?
>
> Reemplazo la "," entre las dos fechas con otro separador, pero tengo que
> recorrerlo 4 veces  (dije que no era optima).
> Igual, son menos de 700 lineas, no deberia generar taaaanta lentitud.
>
> sed -e "s/PM,/PM|/1"|sed -e "s/PM,/PM|/2"
> sed -e "s/AM,/AM|/1"|sed -e "s/AM,/AM|/2"
>
>
> 2013/12/24 Diego Sanchez <diegors en gmail.com>
>
> > Gente.
> > Antes que nada, feliz navidad !
> >
> >
> > Ahora, mi problemita.
> >
> > Estoy tratando de parsear un CSV que bajo de SNDS de Hotmail [1].
> >
> > El formato del CSV es el siguiente
> > IP Address,Activity period,RCPT commands,DATA commands,Message
> > recipients,Filter result,Complaint rate,Trap message period,Trap
> > hits,Sample HELO,Sample MAIL FROM,Comments
> >
> > Sin embargo, lo que bajo, no coincide teniendo campos de más
> >
> > 200.1.2.3,12/23/2013 1:00 PM,12/23/2013 7:00 PM,553,536,536,GREEN,<
> > 0.1%,,,0,ws1.host.name,un en correo.com.ar,
> >
> > Cuáles son los campos de más?
> > Las dos primeras fechas del contenido corresponde a la columna "Activity
> > period", pero al ponerle una ",", quedan como campos distintos.
> > Este mismo problema, se repite en "Trap message period".
> >
> > Si estos datos se vieran en una query SQL, seria mas o menos asi
> > (descuenten que "select *" es una burrada y otros etcs, esto es solo para
> > graficar)
> >
> > SELECT * FROM table limit 1 \G
> > IP Address : 200.1.2.3
> > Activity period : 12/23/2013 1:00 PM,12/23/2013 7:00 PM
> > RCPT commands : 553
> > DATA commands : 536
> > Message recipients : 536
> > Filter result : GREEN
> > Complaint rate : < 0.1%
> > Trap message period :
> > Trap hits :
> > Sample HELO : ws1.host.name
> > Sample MAIL FROM : un en correo.com.ar
> > Comments :
> >
> > Al querer insertar esto en una base de datos, falla porque estoy poniendo
> > más datos de las columnas que tengo.
> >
> > Entonces, básicamente, la pregunta es:
> > ¿Cómo puedo arreglar esto y hacer que sea válido a la hora de importarlo
> > en la base?
> > Pensé en utilizar sed y awk, contando la cantidad de separadores, pero no
> > creo sea el camino correcto (pueden variar si hay o no, datos, y
> reemplazar
> > la segunda ocurrencia, puede correr los datos a insertar un lugar a la
> > izquierda)
> >
> > Supongo, que deberia apuntar a trabajar directamente con el string de la
> > fecha.
> >
> >
> >
> >
> > [1] SNDS muestras las IP que estan siendo rechazadas, y si existe, la(s)
> > cuenta(s) de correo que causaron el bloqueo.
> > https://postmaster.live.com/snds
> >
> > --
> > Diego - Yo no soy paranoico! (pero que me siguen, me siguen)
> >
>
>
>
> --
> Diego - Yo no soy paranoico! (pero que me siguen, me siguen)
> _______________________________________________
> CentOS-es mailing list
> CentOS-es en centos.org
> http://lists.centos.org/mailman/listinfo/centos-es
>

Esto es lo bueno de los sistemas "X", que siempre hay mas de una manera de
hacer las cosas y conseguir lo que se desea.

Exitos!

-- 
Carlos Restrepo.
Móvil: (57) 317 8345628


Más información sobre la lista de distribución CentOS-es