GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie werden CSV-Dateien nach der angegebenen Anzahl von Zeilen aufgeteilt?

Verwenden Sie den Linux-Split-Befehl:

split -l 20 file.txt new    

Teilen Sie die Datei "file.txt" in Dateien auf, die mit dem Namen "neu" beginnen und jeweils 20 Textzeilen enthalten.

Geben Sie man split ein an der Unix-Eingabeaufforderung für weitere Informationen. Allerdings müssen Sie zuerst den Header aus file.txt entfernen (mit dem tail Befehl, zum Beispiel) und fügen Sie es dann wieder zu jeder der geteilten Dateien hinzu.


Habe es zu einer Funktion gemacht. Sie können jetzt splitCsv <Filename> [chunkSize] anrufen

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
}

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


Einzeiler, der die Kopfzeile in jeder geteilten Datei beibehält. Dieses Beispiel gibt Ihnen 999 Datenzeilen und eine Kopfzeile pro Datei.

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

https://stackoverflow.com/a/53062251/401226, wo die Antwort Kommentare zur Installation der richtigen Version von Parallel enthält (in Ubuntu verwenden Sie das spezifische Parallel-Paket, das neuer ist als das, was in Moreutils gebündelt ist)


Das sollte funktionieren !!!

file_name =Name der Datei, die Sie teilen möchten.
10000 =Anzahl der Zeilen, die jede aufgeteilte Datei enthalten würde
file_part_ =Präfix des aufgeteilten Dateinamens (Datei_Teil_0, Datei_Teil_1, Datei_Teil_2..etc geht weiter)

split -d -l 10000 Dateiname.csv Dateiteil_


Linux
  1. So erhöhen Sie das Limit für die Anzahl der geöffneten Dateien in Linux

  2. So konvertieren Sie Dateien in UTF-8-Codierung unter Linux

  3. Wie füllt man eine Datei mit einem Stream aus /dev/urandom mit einer bestimmten Anzahl von Zeilen?

  4. Wie kann ich das Postfach in eine einzelne Datei pro Nachricht aufteilen?

  5. Wie teilt man eine Textdatei in mehrere *.txt-Dateien auf?

So teilen Sie eine große Archivdatei mit dem Split-Befehl in Linux in mehrere kleine Dateien auf

So teilen Sie eine große Archivdatei mit dem Split-Befehl in Linux in mehrere kleine Dateien auf

So benennen Sie eine Datei (en) in Linux um

So verschieben Sie eine große Anzahl von Dateien in Linux

So kopieren Sie eine große Anzahl von Dateien unter Linux

So komprimieren Sie eine Datei unter Linux