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

Diego Sanchez diegors en gmail.com
Mar Dic 24 20:23:33 UTC 2013


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)


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