GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo dividir archivos CSV según el número de filas especificado?

Utilice el comando de división de Linux:

split -l 20 file.txt new    

Divida el archivo "archivo.txt" en archivos que comiencen con el nombre "nuevo", cada uno con 20 líneas de texto cada uno.

Escribe man split en el indicador de Unix para obtener más información. Sin embargo, primero deberá eliminar el encabezado de file.txt (usando el tail comando, por ejemplo) y luego vuelva a agregarlo a cada uno de los archivos divididos.


Lo convirtió en una función. Ahora puedes llamar al splitCsv <Filename> [chunkSize]

splitCsv() {
    HEADER=$(head -1 $1)
    if [ -n "$2" ]; then
        CHUNK=$2
    else 
        CHUNK=1000
    fi
    tail -n +2 $1 | split -l $CHUNK - $1_split_
    for i in $1_split_*; do
        sed -i -e "1i$HEADER" "$i"
    done
}

Encontrado en:http://edmondscommerce.github.io/linux/linux-split-file-eg-csv-and-keep-header-row.html


One-liner que conserva la fila del encabezado en cada archivo dividido. Este ejemplo le brinda 999 líneas de datos y una fila de encabezado por archivo.

cat bigFile.csv | parallel --header : --pipe -N999 'cat >file_{#}.csv'

https://stackoverflow.com/a/53062251/401226 donde la respuesta tiene comentarios sobre la instalación de la versión correcta de paralelo (en ubuntu use el paquete paralelo específico, que es más reciente que el que se incluye en moreutils)


¡¡¡Esto debería funcionar!!!

file_name =Nombre del archivo que desea dividir.
10000 =Número de filas que contendría cada archivo dividido
file_part_ =Prefijo del nombre del archivo dividido (file_part_0,file_part_1,file_part_2..etc continúa)

split -d -l 10000 nombre_archivo.csv parte_archivo_


Linux
  1. Cómo aumentar el número de límites de archivos abiertos en Linux

  2. Cómo dividir y combinar archivos desde la línea de comandos en Linux

  3. ¿Cómo llenar un archivo con una secuencia de /dev/urandom con un número específico de líneas?

  4. ¿Cómo dividir un archivo de texto en varios archivos *.txt?

  5. ¿Cómo eliminar archivos .fuse_hidden*?

Cómo dividir un archivo grande en varios archivos pequeños usando el comando Dividir en Linux

Cómo dividir un archivo grande en varios archivos pequeños usando el comando Dividir en Linux

Cómo cambiar el nombre de un archivo (s) en Linux

Cómo mover una gran cantidad de archivos en Linux

Cómo copiar una gran cantidad de archivos en Linux

Cómo comprimir un archivo en Linux