GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara membagi file CSV sesuai jumlah baris yang ditentukan?

Gunakan perintah pemisahan Linux:

split -l 20 file.txt new    

Pisahkan file "file.txt" menjadi file yang dimulai dengan nama "baru" yang masing-masing berisi 20 baris teks.

Ketik man split di prompt Unix untuk informasi lebih lanjut. Namun Anda harus terlebih dahulu menghapus header dari file.txt (menggunakan tail perintah, misalnya) dan kemudian menambahkannya kembali ke setiap file yang dipisahkan.


Membuatnya menjadi fungsi. Sekarang Anda dapat memanggil 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
}

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


One-liner yang mempertahankan baris tajuk di setiap file terpisah. Contoh ini memberi Anda 999 baris data dan satu baris header per file.

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

https://stackoverflow.com/a/53062251/401226 di mana jawabannya memiliki komentar tentang menginstal versi paralel yang benar (di ubuntu gunakan paket paralel khusus, yang lebih baru daripada yang dibundel di moreutils)


Ini seharusnya berhasil !!!

file_name =Nama file yang ingin dipisah.
10000 =Jumlah baris yang akan berisi setiap file yang dipisah
file_part_ =Awalan nama file terpisah (file_part_0,file_part_1,file_part_2..dll terus berlanjut)

split -d -l 10000 file_name.csv file_part_


Linux
  1. Cara Meningkatkan Jumlah Batas File Terbuka di Linux

  2. Cara Mengonversi File ke Encoding UTF-8 di Linux

  3. Bagaimana cara membagi kotak surat menjadi satu file per pesan?

  1. Cara Memisahkan Dan Menggabungkan File Dari Baris Perintah Di Linux

  2. Bagaimana Cara Mengisi File Dengan Aliran Dari /dev/urandom Dengan Jumlah Baris Tertentu?

  3. Bagaimana cara menghapus file .fuse_hidden*?

  1. Bagaimana cara mengurai file CSV di Bash?

  2. Bagaimana cara membagi satu file teks menjadi beberapa file *.txt?

  3. Bagaimana cara menggabungkan dua file CSV?