pipa untuk membagi gunakan gunzip -c atau zcat untuk membuka file
gunzip -c bigfile.gz | split -l 400000
Tambahkan spesifikasi output ke perintah split.
Cara melakukan yang terbaik bergantung pada apa yang Anda inginkan:
- Apakah Anda ingin mengekstrak satu bagian dari file besar?
- Atau apakah Anda ingin membuat semua bagian sekaligus?
Jika Anda menginginkan satu bagian dari file , ide Anda untuk menggunakan gunzip
dan head
benar. Anda dapat menggunakan:
gunzip -c hugefile.txt.gz | head -n 4000000
Itu akan menampilkan 4.000.000 baris pertama pada standar keluar - Anda mungkin ingin menambahkan pipa lain untuk benar-benar melakukan sesuatu dengan data tersebut.
Untuk mendapatkan bagian lainnya, Anda akan menggunakan kombinasi head
dan tail
, seperti:
gunzip -c hugefile.txt.gz | head -n 8000000 |tail -n 4000000
untuk mendapatkan blok kedua.
Apakah mungkin melakukan serangkaian solusi ini atau apakah gunzip -memerlukan cukup ruang untuk seluruh file untuk dibuka ritsletingnya
Bukan, gunzip -c
tidak memerlukan ruang disk apa pun - ia melakukan segalanya di memori, lalu mengalirkannya ke stdout.
Jika Anda ingin membuat semua bagian sekaligus , lebih efisien untuk membuat semuanya dengan satu perintah, karena file input hanya dibaca sekali. Salah satu solusi yang baik adalah dengan menggunakan split
; lihat jawaban jim mcnamara untuk detailnya.
Saat Anda mengerjakan aliran (tidak dapat diputar ulang), Anda akan ingin menggunakan bentuk ekor '+N' untuk mendapatkan garis mulai dari garis N dan seterusnya.
zcat hugefile.txt.gz | head -n 40000000
zcat hugefile.txt.gz | tail -n +40000001 | head -n 40000000
zcat hugefile.txt.gz | tail -n +80000001 | head -n 40000000