2013/06/12

Rellenar valores vacíos de una tabla con el anterior no vacío

Imagina que tienes un CSV con valores en una columna vacios de la siguiente forma

FECHA;VALOR
15/06/12;7
18/06/12;0,5
 ;0,25
20/06/12;1
 ;2
 ;1,5
 ;2
 ;0,25
22/06/12;1
 ;2
 ;1
 ;1
 ;0,5
 ;1,5

Vemos que la columna FECHA no siempre está relleno y queremos que se complete con el valor de la primera fila anterior con valor no nulo. Ahí va una solución rápida y sencilla usando el programa awk
cat myfile.csv  | awk -F';' \ 
#Inicializo variable que almacena el valor válido
'BEGIN {d=""} \ 
{if ( $1 != "" ){ 
#Si no esta vacio asigno el valor
   d=$1; 
}
#Pinto el valor correcto para la primera columna
printf d";"; 
#y luego el resto
for (i=2; i<NF; i++) printf $i ";"; print $NF 
}'
       
   

No hay comentarios: