GNU/Linux >> Linux Esercitazione >  >> Linux

Come dividere i file CSV in base al numero di righe specificato?

Usa il comando split di Linux:

split -l 20 file.txt new    

Dividi il file "file.txt" in file che iniziano con il nome "nuovo" ciascuno contenente 20 righe di testo ciascuno.

Digita man split al prompt di Unix per ulteriori informazioni. Tuttavia dovrai prima rimuovere l'intestazione da file.txt (usando il tail comando, ad esempio) e quindi aggiungerlo nuovamente a ciascuno dei file divisi.


Trasformato in una funzione. Ora puoi chiamare 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
}

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


One-liner che conserva la riga di intestazione in ogni file diviso. Questo esempio fornisce 999 righe di dati e una riga di intestazione per file.

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

https://stackoverflow.com/a/53062251/401226 dove la risposta contiene commenti sull'installazione della versione corretta di parallel (in Ubuntu usa il pacchetto parallelo specifico, che è più recente di quello fornito in bundle in moreutils)


Dovrebbe funzionare!!!

file_name =Nome del file che vuoi dividere.
10000 =Numero di righe che ogni file diviso conterrebbe
file_part_ =Prefisso del nome del file diviso (file_part_0, file_part_1, file_part_2..etc continua)

split -d -l 10000 file_name.csv file_part_


Linux
  1. Come aumentare il limite del numero di file aperti in Linux

  2. Come convertire file in codifica UTF-8 in Linux

  3. Come dividere un singolo file in più file in base alle righe

  4. Come riempire un file con un flusso da /dev/urandom con un numero specificato di righe?

  5. Come dividere un file di testo in più file *.txt?

Come dividere un file di archivio di grandi dimensioni in più file di piccole dimensioni utilizzando il comando Dividi in Linux

Come dividere un file di archivio di grandi dimensioni in più file di piccole dimensioni utilizzando il comando Dividi in Linux

Come rinominare uno o più file in Linux

Come spostare un gran numero di file in Linux

Come copiare un gran numero di file in Linux

Come comprimere un file in Linux