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

Diego Sanchez diegors en gmail.com
Mar Dic 24 22:52:28 UTC 2013


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)


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