Saya mencari cara unix untuk membagi file menjadi dua file pada nomor baris yang diberikan.
split -l 100 file_name
dekat dengan apa yang saya cari, tetapi perintah ini membuat banyak file, masing-masing dari 100 baris. Saya mencari perintah untuk membagi file menjadi dua file pada nomor baris yang diberikan. Apakah ada cara untuk melakukan ini di unix?
wc
sebelumnya dan file input masih diproses hanya sekali, seperti denganawk
solusinya.head
akan membaca lebih dari 100 baris untuk menemukan 100 baris pertama yang akan di-outputf1.txt
; byte tambahan itu tidak akan terlihat olehcat
.Gunakan
awk
, sehingga Anda hanya perlu membuat satu melewati file input. Berikut ini mengasumsikan Anda menginginkan 122 baris pertama di file pertama, dan sisanya di baris kedua.sumber
Anda dapat menggunakan
head
dantail
mendapatkan kedua bagian:di mana
K
nomor baris, danL
jumlah baris dari bawah (jumlah total baris -K
).(Anda bisa mendapatkan jumlah total baris menggunakan
wc -l file_name
).sumber
Anda dapat menggunakan
csplit
(jika tersedia) untuk melakukannya:akan membagi file menjadi dua bagian, satu bagian hingga (dan termasuk) nomor baris
N
dan bagian lainnya dari nomor barisN+1
hingga baris terakhir.Jika Anda ingin membagi hingga (tetapi tidak termasuk) nomor baris
N
:sumber
csplit
dioptimalkan untuk pekerjaan ini.Keduanya
head
dantail
memiliki opsi untuk menghasilkan baris dari ujung file "lain" daripada yang seharusnya. Jadi, Anda memiliki dua opsi ini:atau (di mana NNN 100 kurang dari output
wc -l source.txt
):Anda dapat membaca halaman manual untuk versi Anda
head
dantail
untuk informasi lebih lanjut.sumber
Anda dapat menggunakan 'wc', 'dc', 'head' dan 'tail'. Yaitu
Untuk kemudahan penggunaan, Anda dapat mengubah di atas menjadi skrip shell.
sumber