Eliminar lineas de archivo CSV por criterio

Rodrigo Ruiz Fuentes rruizf en gmail.com
Mie Feb 2 19:01:22 CLST 2011


On 02/02/11 15:12, Marcos Ramirez wrote:
> On Wed, 2011-02-02 at 15:00 -0300, Rodrigo Ruiz Fuentes wrote:
>> Estimad en s,
>> la situación es la siguiente, tengo un archivo grande en formato CSV,
>> separado por puntos y comas (;) y delimitado por comillas dobles ("), en
>> los campos 4 y 5 vienen latitudes y longitudes respectivamente, a veces
>> el dato viene mal y vacío, o sea ""... necesito revisar el archivo y
>> eliminar las lineas que en el campo 4 y 5 sean "" (vacías).
>> Me indicaron que con sed podía hacer eso, algo logré, sin embargo hay
>> mas campos que si pueden ser vacíos, pero no se debe eliminar la línea
>> completa, entonces ahí es el problema, no sé como indicar que verifique
>> la posición 4 y 5 solamente.
> si entiendo bien, quieres eliminar todas las lineas donde el campo 4 ó
> el campo 5, o bien, esten vacios, o solo tengan un par de ""
>
> Si es asi, te deberia servir algo como
>
> egrep -v -e '^([^;]*;){3,4}\"?\"?;' archivo
>
> Saludos
>

Marcos, funcionó perfecto, muchas gracias por tu ayuda.
Sin embargo, tendré que hacer otra cosa para verificar que esos campos 
sean numéricos mejor, pues ni idea como se genera el archivo, pero a 
veces trae información que es basura, pueden venir latitudes y/o 
longitudes de la forma -33.39035415670.5850, que trae 2 puntos en el 
número, y otras trae texto, pues la línea no se ha generado bien.
Muchas gracias de todas formas.

Saludos.-

-- 
Rodrigo Ruiz Fuentes



Más información sobre la lista de distribución Linux