En ocasiones se necesita tomar un archivo grande y separarlo en pequeños archivos seimpre repitiendo la cabecera.
Esta es la manera de resolverlo utilzando split, head, tail
Supongamos que tenemos un archivo llamado prueba.csv
Paso 1: Tomamos a partir de la linea 2 y pasamos al comando split el cual divide en archivos con 500 lineas, colocando como sufijo un consecutivo numérico que comienza por 00, si se obvia -d el sufijo es alfabéttico comenzando por aa
tail -n +2 prueba.csv | split -l 500 -d - prueba_parte_
Paso 2: Por cada archivo generado se toma la primera la linea del archivo original y se concatena al principio
for file in prueba_parte_*
do
head -n 1 prueba.csv > tmp_file
cat $file >> tmp_file
mv -f tmp_file $file
done
Paso 3: En mi caso la version de split aun no soporta el argumento --additional-suffix que permitiria establecer una extensión
for file in prueba_parte_*
do
mv -i $file $file.csv
done
No hay comentarios.:
Publicar un comentario